0

所以我有点问题。我会看看我能解释到什么程度。

我有一个类作为链接在我的 Windows Phone 前台应用程序和后台之间共享(它们都使用相同的文件),这是因为数据是从此类中序列化并向后传递的,因此它需要完全相同。

在前台进程中,我想使用 IEquatable 来覆盖 GetHash 和 Equals,因此当我在 ItemModel 上调用 ObservableCollection.Remove 时,它​​不会根据引用进行删除,我可以让它在删除选定的项目时手动比较属性来自另一个列表(即 2 个相同的项目,每个项目在内存中都有自己的位置)。

我已经测试过,它工作正常,但我无法在 Windows 运行时界面中实现 IEquatable(我还是不太明白,但没关系)“错误 10 类型'Project.ViewModels.ItemModel'实现接口'System.IEquatable' ,它不是Windows Runtime接口。所有导出类型实现的接口都必须是Windows Runtime接口。”

所以 IEquatable 在前台进程中是允许的,但不是在后台,而是因为它们正在使用链接文件。你可能会问,为什么不在后台项目中复制这个类而不实现 IEquatable?好吧,因为当两个类的定义不完全相同时,我开始遇到序列化和反序列化数据的问题。

  public class ItemModel: INotifyPropertyChanged, IEquatable<ItemModel>
4

0 回答 0