IObservable模糊引用错误

Muk*_*wat 6 wpf mscorlib system.reactive

我在WPF应用程序中使用了Reactive扩展.在使用它时,我会得到模糊的引用错误.

The type 'System.IObservable<T>' exists in both 'mscorlib.dll' and 'System.Reactive.dll'
Run Code Online (Sandbox Code Playgroud)

我也尝试了完全合格的名字,并尝试了这个网址,但没有得到任何运气.我正在使用.NET 4.0版本的Reactive Extensions.

我的代码:

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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

知道我怎么解决这个问题?

谢谢

Jim*_*ley 8

当您说您使用的是.Net 4版本的Rx时,您使用的是哪个版本的Rx?1.1或2.x?如果使用2.x,则不应该引用System.Reactive,而应该引用System.Reactive.Core.我怀疑你从.Net 3.5升级了这个项目,但没有更新所有必要的参考资料.确保您使用的Rx版本不适用于Silverlight 4或.Net 3.5(核心中没有IObservable/IObserver).

如果你只是删除对被动的引用并让nuget使用Reactive Extensions - WPF Helpers版本为你重新添加它们,这可能是最简单的.注意:如果您使用的是旧版System.Linq命名空间中具有扩展方法的旧版本,则可能需要使用Rx更改类的导入以导入System.Reactive.Linq.


She*_*dan 5

当你参考时IObservable,要么使用

System.Reactive.IObservable<T>
Run Code Online (Sandbox Code Playgroud)

要么

System.IObservable<T>
Run Code Online (Sandbox Code Playgroud)

UPDATE >>>

啊,现在你已经添加了图像,我看到了你的问题.你有两个System.IObservable类......那些Reactive家伙的白痴!

无论如何,看看这些帖子:

如何在2个不同的DLL中访问具有相同完全限定名称的类型

外部别名演练

它不漂亮,但它可以帮助你.

  • 那不是原因……升级后,他一定引用了错误的版本。@JimWooley是正确的。称呼人们为白痴,尤其是当他们不在时,是不合适的。 (2认同)