我需要为业务对象编写第二个相等比较器。这是一个专门的平等比较器,只适用于某些情况。我不想重写Equal(),因为我们的持久层使用它来内部比较对象以供自己使用。 让我给你一个类的实例:使用两个不同的相等比较器的C#
public class Product : BusinessObjectBase
{
string Name {get;set;}
string Desc {get;set;}
double Price {get;set;}
}
因为我们纪念三个属性在我们的数据访问层的持久性数据属性时,equals()方法在BusinessObjectBase比较这些属性。现在,在特定情况下,我想检查产品A是否等于产品B只是名称。我不想在检查上硬编码实际属性,因为此属性可能稍后会更改。
尽管可以在这里使用IComparer,但是基于MSDN上的描述,IComparer应该用来不等同项目而是对它们进行排序,所以这看起来不是100%正确的答案。 我想使用.NET已有的东西,而不是创建另一个接口。 这样做的最好方法是什么?
谢谢
它已经存在:猜名字? [IEqualityComparer!](http://msdn.microsoft.com/en-us/library/ms132151.aspx);) – digEmAll
你在说“产品A等于产品B只是名称,我不想硬编码检查时的实际属性,因为此属性可能会发生变化“。如何比较2个对象而不指定Name属性并仅使用IEqualityComparer。你是否在Equals Method中使用了反射,或者在IEqualityComparer 中有什么特别之处,这会让你这么做 –
Sankara