3

ビジネスオブジェクトの2番目の等式比較子を作成する必要があります。これは、特定の状況にのみ適用できる特殊な等式比較器です。Equal()をオーバーライドしたくないのは、永続レイヤーがEqual()を使用して、オブジェクトを内部的に比較して独自に使用するためです。クラスの例を挙げましょう。

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

データアクセス層で3つのプロパティを永続データプロパティとしてマークしているため、BusinessObjectBaseのEquals()はこれらのプロパティを比較します。ここで、特定の例で、製品Aが製品Bと等しいかどうかを確認したいのは名前だけです。このプロパティは後で変更される可能性があるため、チェックで実際のプロパティをハードコーディングしたくありません。

ここではIComparerを使用できますが、MSDNの説明に基づくと、IComparerはアイテムを同一視するのではなく、並べ替えるために使用する必要があります。これは、100%正解ではないようです。.NETにすでにあるものを使用し、別のインターフェイスを作成したくない。これを行うための最良の方法は何ですか?

ありがとう

4

1 に答える 1

14

あなたが探してIEqualityComparer<T>いる。

于 2013-01-11T15:39:13.243 に答える