所以我有点问题。我会看到我能解释得多好。
我有一个在我的Windows Phone前台应用程序和后台之间共享的类作为链接(它们都使用相同的文件)这是因为数据是从这个类序列化的,然后传回来,所以它需要准确同样的。
在前台进程中我想使用IEquatable来覆盖GetHash和Equals所以当我在ItemModel上调用ObservableCollection.Remove时它不会根据引用删除它我可以手动比较属性为I我正在删除从另一个列表中选择的项目(即2个相同的项目,每个项目在内存中都有自己的位置)。
我已经过测试,但它运行正常,但我无法在Windows运行时界面中实现IEquatable(我还是没有完全理解这一点,但没关系)"错误10类型' Project.ViewModels.ItemModel'实现接口&System;可以接口的System.IEquatable',它不是Windows运行时接口。导出类型实现的所有接口都必须是Windows运行时接口。 "
因此,IEquatable在前台进程中是允许的,但不是后台,而是因为它们正在使用链接文件。您可能会问,为什么不在后台项目中复制此类并且不实现IEquatable?好吧,因为当两个类没有完全相同的定义时,我开始遇到序列化和反序列化数据的问题。
public class ItemModel: INotifyPropertyChanged, IEquatable<ItemModel>