10

2 つの同一の匿名型オブジェクトが与えられた場合:

{msg:"hello"} //anonType1
{msg:"hello"} //anonType2

そして、それらが同じ型に解決されていないと仮定します (たとえば、異なるアセンブリで定義されている可能性があります)。

anonType1.Equals(anonType2); //false

さらに、anonType1API が公開するのはobject

そこで、それらを比較するために、次の手法を考えました。

  1. リフレクションを使用して、比較のためにmsgプロパティを取得します。anonType1
  2. 比較のために動的メンバーの型と参照にキャストanonType1するdynamic.msg
  3. .GetHashCode()各オブジェクトの結果を比較します。

私の質問は次のとおりです。オプション 3 を使用しても安全ですか? .GetHashcode()つまり、.NET フレームワークの現在および将来のすべてのバージョンで、実装が常に同一構造の同じ値を返すが、異なる匿名型を返すと仮定するのは賢明でしょうか?

4

1 に答える 1