IObservable模糊引用错误

时间:2013-07-29 15:50:16

标签: wpf system.reactive mscorlib

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

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

我也尝试使用完全限定名称并尝试了this url,但没有运气。我正在使用.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

enter image description here

我知道如何解决这个问题?

由于

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:5)

当您引用IObservable时,请使用

System.Reactive.IObservable<T>

System.IObservable<T>

UPDATE&GT;&GT;&GT;

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

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

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

Extern alias walkthrough

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

相关问题