2 つの同一の匿名型オブジェクトが与えられた場合:
{msg:"hello"} //anonType1
{msg:"hello"} //anonType2
そして、それらが同じ型に解決されていないと仮定します (たとえば、異なるアセンブリで定義されている可能性があります)。
anonType1.Equals(anonType2); //false
さらに、anonType1
API が公開するのはobject
そこで、それらを比較するために、次の手法を考えました。
- リフレクションを使用して、比較のために
msg
プロパティを取得します。anonType1
- 比較のために動的メンバーの型と参照にキャスト
anonType1
するdynamic
.msg
.GetHashCode()
各オブジェクトの結果を比較します。
私の質問は次のとおりです。オプション 3 を使用しても安全ですか? .GetHashcode()
つまり、.NET フレームワークの現在および将来のすべてのバージョンで、実装が常に同一構造の同じ値を返すが、異なる匿名型を返すと仮定するのは賢明でしょうか?