一次使用某些库时调用不明确
Ambiguous call when using certain libraries at once
在我的 Xamarin 项目中,我使用的是 ReactiveUI 和 Firebase.Xamarin。当同时使用这两个库时,任何尝试使用 System.Reactive.Linq.Observable
扩展方法(例如 Where
或 Select
都会导致编译时错误:
The call is ambiguous between the following methods or properties: 'System.Reactive.Linq.Observable.Where(System.IObservable, System.Func)' and 'System.Reactive.Linq.Observable.Where(System.IObservable, System.Func)'
我认为这是由这两个库引起的 defining/referencing 相同名称空间中的相同方法。我该如何解决?
您可能正在加载定义该命名空间的程序集的多个版本。您引用的程序集可能加载了共同的依赖项。如果他们加载该程序集的不同版本,您将收到此错误。
确保您使用的两个库的版本依赖于相同版本的相关程序集。
Firebase.Xamarin 不再维护,所以如果我想遵循@PhilipSmith 的建议,我将不得不使用超过 2 年的 ReactiveUI 版本。我不想这样做,所以我决定从它的 OSS 克隆 Firebase.Xamarin 并将它作为另一个项目添加到我的解决方案中,目的是改变它引用的 ReactiveUI 版本。但是当我添加 is 作为引用项目时,错误消失了。
在我的 Xamarin 项目中,我使用的是 ReactiveUI 和 Firebase.Xamarin。当同时使用这两个库时,任何尝试使用 System.Reactive.Linq.Observable
扩展方法(例如 Where
或 Select
都会导致编译时错误:
The call is ambiguous between the following methods or properties: 'System.Reactive.Linq.Observable.Where(System.IObservable, System.Func)' and 'System.Reactive.Linq.Observable.Where(System.IObservable, System.Func)'
我认为这是由这两个库引起的 defining/referencing 相同名称空间中的相同方法。我该如何解决?
您可能正在加载定义该命名空间的程序集的多个版本。您引用的程序集可能加载了共同的依赖项。如果他们加载该程序集的不同版本,您将收到此错误。
确保您使用的两个库的版本依赖于相同版本的相关程序集。
Firebase.Xamarin 不再维护,所以如果我想遵循@PhilipSmith 的建议,我将不得不使用超过 2 年的 ReactiveUI 版本。我不想这样做,所以我决定从它的 OSS 克隆 Firebase.Xamarin 并将它作为另一个项目添加到我的解决方案中,目的是改变它引用的 ReactiveUI 版本。但是当我添加 is 作为引用项目时,错误消失了。