2013-07-29 11 views
6

मैं अपने WPF अनुप्रयोग में प्रतिक्रियाशील एक्सटेंशन का उपयोग कर रहा हूं। और इसका उपयोग करते समय मैं अस्पष्ट संदर्भ त्रुटि से नीचे आ रहा हूं।IObservable संदिग्ध संदर्भ त्रुटि

The type 'System.IObservable<T>' exists in both 'mscorlib.dll' and 'System.Reactive.dll' 

मैं भी पूरी तरह से योग्य नाम के साथ की कोशिश की और साथ ही this url कोशिश की, लेकिन किसी भी भाग्य नहीं मिला। मैं प्रतिक्रियाशील एक्सटेंशन के .NET 4.0 संस्करण का उपयोग कर रहा हूं।

मेरे कोड:

using System; // mscorlib.dll 
using Rx = System.Reactive; 

public Rx.IObservable<int> BytesReceived { get { return _bytesReceivedSubj; } } // Not valid as IObservable is in System namespace of System.Reactive. 

public IObservable<int> BytesReceived { get { return _bytesReceivedSubj; } } // With this I'm getting ambiguous reference error 

enter image description here

किसी भी विचार मैं यह कैसे हल कर सकते हैं?

धन्यवाद

+3

त्रुटि बहुत आत्म-व्याख्यात्मक है। आपके पास 2 पुस्तकालय हैं जिनके पास 'IObservable' की परिभाषा है, इसलिए आपको यह स्पष्ट करना होगा कि आप किस का उपयोग करने का प्रयास कर रहे हैं। –

+0

दोनों "सिस्टम" नामस्थान में हैं, और उसी रूप में मैं इवेंट हैंडलर और सभी के लिए mscorlib से सिस्टम का उपयोग कर रहा हूं। तो मैं IObservable के लिए यहां पूरी तरह से योग्य नाम कैसे दे सकता हूं? अगर मैंने System.IObservable का उपयोग किया तो यह मुझे फिर अस्पष्ट संदर्भ त्रुटि देगा। –

+0

आपके पास सिस्टम का उपयोग करने के अतिरिक्त अतिरिक्त नहीं है। प्रतिक्रियाशील; 'वहां कहीं कहीं है? –

उत्तर

5

आप संदर्भ जब IObservable, या तो का उपयोग

System.Reactive.IObservable<T> 

या

System.IObservable<T> 

अद्यतन >>>

Ahhhh, अब है कि आप छवि जोड़ दिया है, मैं तुम्हारी समस्या देखता हूँ। आपके पास दो सिस्टम हैं IIOervervable कक्षाएं ... उन प्रतिक्रियाशील लोग क्या बेवकूफ हैं!

वैसे भी, इन पदों पर एक नज़र डालें:

How to access a type with same fully qualified name in 2 different DLLs

Extern alias walkthrough

यह बहुत नहीं है, लेकिन यह आप की मदद करनी चाहिए।

+0

यही कारण नहीं है ... उसे अपग्रेड करने या कुछ के बाद गलत संस्करणों का संदर्भ देना चाहिए। @ जिमवॉली सही है। लोगों को बेवकूफ़ों को बुलाओ, खासकर जब वे नहीं हैं, अनुचित है। –

7

जब आप कहते हैं कि आप आरएक्स के .Net 4 संस्करण का उपयोग कर रहे हैं, तो आप आरएक्स का किस संस्करण का उपयोग कर रहे हैं? 1.1 या 2.x? यदि 2.x का उपयोग करना है, तो आपके पास सिस्टम का संदर्भ नहीं होना चाहिए। प्रतिक्रियाशील, बल्कि सिस्टम। प्रतिक्रियाशील। कोर। मुझे संदेह है कि आपने इस परियोजना को .NET 3.5 से अपग्रेड किया है लेकिन आपके सभी आवश्यक संदर्भ अपडेट नहीं किए हैं। सुनिश्चित करें कि आप जिस आरएक्स का उपयोग कर रहे हैं उसका संस्करण Silverlight 4 या .Net 3.5 के लिए नहीं है (जिसमें कोर में IObservable/IObserver नहीं था)।

यदि आप प्रतिक्रियाशील संदर्भों को केवल हटा दें और प्रतिक्रियाशील एक्सटेंशन - WPF हेल्पर्स संस्करण का उपयोग करके उन्हें आपके लिए दोबारा जोड़ दें तो यह सबसे आसान हो सकता है। नोट: आपको सिस्टम को आयात करने के लिए आरएक्स का उपयोग करके कक्षाओं के लिए अपने आयात को बदलने की आवश्यकता हो सकती है। Reactive.Linq यदि आप पुराने संस्करण का उपयोग कर रहे हैं जिसमें पुराने सिस्टम में एक्सटेंशन विधियां हैं। लिंक नामस्थान।

+0

https://www.nuget.org/packages/Rx-WPF/ – JensG

संबंधित मुद्दे