指定されたインスタンスがコレクションと一致していることを確認する必要があります(どちらも不明な型です)。次のコードを検討する - たとえば未知の型の等価性の決定
public bool CheckEquality(object obj1, object obj2)
{
// Solution for Determining equality for unknown types
}
:(唯一の目的を理解するために)
シナリオ#1
は、メソッドをチェック表情
void Main()
{
// Employee "John" Object got from Service Layer #1
Object obj1 = Client1.GetObject("John");
// Employee "John" Object got from Service Layer #2
Object obj2 = Client2.GetObject("John");
bool flag = CheckEquality(obj1, obj2); // Both objects are Unknown Type
}
平等を持っています
public class EmpPerson
{
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
obj1
new EmpPerson() { ID = 1, Name = "John", Address = "Los Angeles" };
obj2
インスタンスを保持しているインスタンスを保持new EmpPerson() { ID = 1, Name = "John", Address = "Los Angeles" };
シナリオ#2
obj1
値"John Smith"
を保持します。
obj2
は、値"John Smith"
を保持します。
シナリオ#3
obj1
は値"John Smith"
を保持しています。
obj2
インスタンスを保持new EmpPerson() { ID = 1, Name = "John", Address = "Los Angeles" };
シナリオ#4
obj1
値new UnknownTypeA()
を保持します。
obj2
は、値new UnknownTypeX()
を保持します。
私は両方のオブジェクトが同一であることを確認する必要があります。
私を親切にしてください。不明な型の等価性をチェックする方法。
他にはどのような種類が関係しているのでしょうか?以前の別の質問のコメントに従って、型はフィールドによって公開されていない「隠れた」状態になっている可能性がありますか?それはコレクションを含むことができますか?その状態を隠す型の例として、 'Random'プロパティを含むことができますか?循環参照を含めることはできますか?これは一般的には可能ではありませんが、関係するタイプを制約すると、それを反映させることができます。 (循環参照については注意が必要です...) –
@JonSkeet - 答えを教えてください... –
シナリオ#2では、 'obj1'と' obj2'は単純に文字列であるか、 EmpPerson'だけど名前は知ってる? –