类型' System.ComponentModel.INotifyPropertyChanged'在未引用的程序集中定义

时间:2015-01-08 13:22:34

标签: android xamarin xamarin.android mvvmcross

我为同一个文件收到以下错误:LocationToLatLngValueConverter.cs

参考: https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-41-Maps

The type `System.ComponentModel.INotifyPropertyChanged` is defined in an assembly that is not referenced. You must add a reference to assembly `System.ObjectModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a`.

`D:\MVVMCross\MVVMCrossApps\MAP\Map\Map.Droid\Views\LocationToLatLngValueConverter.cs`

`Map.Droid.Views.LocationToLatLngValueConverter.Convert(Map.Core.ViewModels.Location, System.Type, object, System.Globalization.CultureInfo)': no suitable method found to override`

`D:\MVVMCross\MVVMCrossApps\MAP\Map\Map.Droid\Views\LocationToLatLngValueConverter.cs`

`Map.Droid.Views.LocationToLatLngValueConverter.ConvertBack(Android.Gms.Maps.Model.LatLng, System.Type, object, System.Globalization.CultureInfo)': no suitable method found to override    D:\MVVMCross\MVVMCrossApps\MAP\Map\Map.Droid\Views\LocationToLatLngValueConverter.cs`

根据演示,提供了应用程序的所有内容。

我仍然无法摆脱这些问题。

3 个答案:

答案 0 :(得分:13)

我在引用PCL的单元测试项目中遇到此错误。 它抱怨我没有引用System.Object。问题似乎是由于我引用System.Runtime - Resharper似乎想要添加它。

删除System.Runtime的引用为我解决了问题。

答案 1 :(得分:1)

我已经查看了代码,这个转换器实际上没有任何问题。失败的原因是您有对System.ObjectModel和System.Runtime的引用,这些引用指向这些类的错误版本。你可以看到,因为Xamarin工作室的名字后面有一个“红色X”。

还引用了.net和其他软件包的非常具体的版本,不建议用于正常目的。

答案 2 :(得分:0)

我设法通过删除文件开头的所有using语句然后逐个添加它来解决这个问题。

Resharper最终建议我参考System.ObjectModel