IObservable ambiguous reference error

断了今生、忘了曾经 提交于 2019-12-07 03:13:22

问题


I'm using Reactive extensions in my WPF application. And while using it I'm getting below ambiguous reference error.

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

I tried with fully qualified name also and tried this url as well, but didn't get any luck. I'm using .NET 4.0 version of Reactive Extensions.

My Code:

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

Any idea how can i resolve this?

Thanks


回答1:


When you reference IObservable, either use

System.Reactive.IObservable<T>

or

System.IObservable<T>

UPDATE>>>

Ahhhh, now that you've added the image, I see your problem. You have two System.IObservable classes... what idiots those Reactive guys are!

Anyway, take a look at these posts:

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

Extern alias walkthrough

It's not pretty, but it should help you.




回答2:


When you say you are using the .Net 4 version of Rx, which version of Rx are you using? 1.1 or 2.x? If using 2.x, you shouldn't have a reference to System.Reactive, but rather System.Reactive.Core. I suspect you upgraded this project from .Net 3.5 but didn't update all of your necessary references. Make sure the version of Rx you are using isn't for Silverlight 4 or .Net 3.5 (which didn't have IObservable/IObserver in the core).

It may be easiest if you just remove the references to reactive and have nuget re-add them for you using the Reactive Extensions - WPF Helpers version. Note: You may need to change your imports for classes using Rx to import System.Reactive.Linq if you are using the older version that had the extension methods in the older System.Linq namespace.



来源:https://stackoverflow.com/questions/17928507/iobservable-ambiguous-reference-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!