我需要为业务对象编写第二个相等比较器。它是一种专门的等式比较器,仅适用于某些情况。我不想重写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已有的东西,而不是创建另一个接口。 做这个的最好方式是什么?
由于
答案 0 :(得分:14)
您正在寻找IEqualityComparer<T>
。