0

誰かが問題を解決してくれることを願っていました。タイプの新しいクラスを作成しようとしています:

public class Foo<T>

メソッドの唯一の仕事は、別のクラスのプロパティを反復処理することです。さまざまな量のプロパティが定義された約 20 のクラスがあります。

public class Bar {
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Shirt {
    public string Color { get; set; }
    public string Size { get; set; }
    public string Brand { get; set; }
}

public class Pants {
    public string Color { get; set; }
    public string Waist { get; set; }
    public string Length { get; set; }
    public string Inseam { get; set; }
}

そして、パブリック クラス Foo のメソッドは次のとおりです。

public class Foo<T> {
    public string FooMethod(T before, T after /* other variables? */) {
        // compare before & after
    }
}

同じ名前の各クラスは、Fooのプライマリ メソッドに 2 回入りますが、プロパティ値は異なります。したがってBar 、前の Id & Nameは になる可能性がありますが1 & "Bar"Bar 後の Id & Nameは になる可能性があります2 & "BarBar"

ここから、 before & afterの各プロパティを比較するための他の操作が行われます。ただし、各クラスのプロパティの数はさまざまであり、1 つのメソッドのみを使用しようとしているため、ジレンマがあります。

4

1 に答える 1

0

FooMethod で複数のタイプのオブジェクトを比較したい場合は、すべてのクラス (Bar、Shirt、Pants ...) で Equals および GetHashcode メソッドをオーバーライドし、そこで比較を行うことができます。そうすれば、FooMethod はbefore.Equals(after)それらを比較するためだけに呼び出されます。

于 2013-04-21T07:29:12.753 に答える