3

我需要为业务对象编写第二个相等比较器。它是一个专门的相等比较器,仅适用于某些情况。我不想覆盖 Equal(),因为我们的持久层使用它在内部比较对象以供自己使用。让我给你一个类的例子:

public class Product : BusinessObjectBase
{
    string Name  {get;set;}
    string Desc  {get;set;}
    double Price {get;set;}
} 

由于我们在数据访问层中将这三个属性标记为持久数据属性,因此 BusinessObjectBase 中的 Equals() 会比较这些属性。现在,在特定情况下,我想检查产品 A 是否等于产品 B 只是名称。我不想硬编码支票上的实际属性,因为这个属性以后可能会改变。

虽然可以在这里使用 IComparer,但根据 MSDN 上的描述,IComparer 不应该用于等同项,而是用于对它们进行排序,因此这似乎不是 100% 正确的答案。我想使用 .NET 已有的东西,而不是创建另一个接口。做这个的最好方式是什么?

谢谢

4

1 回答 1

14

你正在寻找IEqualityComparer<T>.

于 2013-01-11T15:39:13.243 回答