我需要爲業務對象編寫第二個相等比較器。這是一個專門的平等比較器,只適用於某些情況。我不想重寫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