object
のオブジェクトを持っていますが、GetType()
を呼び出すと、1つのケースではHashSet<Availability>
の型が返されますが、返されます。別の場合にはHashSet<Contact>
の無関係型、または未知数の任意の数のHashSet<...>
型である。C#では、オブジェクト型を汎用型オブジェクトのコレクション型にアップキャストできます
object myObject = getMyObject();
myObject.GetType() // = HashSet<Availability>
コードがしたままのを知っている必要はないように私は、オブジェクトにコレクションのジェネリック型をキャストダウンしながら、いくつかの種類(HashSetのか、他)のコレクションにオブジェクトをキャストしたいと思いますコンパイル時には未知の型です。
object myObject = getMyObject();
myObject.GetType() // = HashSet<Availability>
var myUsefulObject = (HashSet<object>)myObject;
これを試してみると、「キャストできません...」という例外が発生しています。
これは可能ですか? そうなら、どうですか?
は、私は私が持っているHashSetのタイプと私が欲しい1間の共分散を持っていると信じていたが、私の初期タイプが唯一のオブジェクトであるので、私はthis stack-overflow answer suggests何をすることができません。
*これは可能ですか?* - いいえこれはすべての夢です。コンパイラは、共分散についてのあなたの信念が間違っていることを実際には伝えておらず、あなたがやっていることは根本的にあなたがリンクしている答えとは根本的に異なっていることは無関係です。 –
見て、 'HashSet'を 'HashSet
また、*なぜ*これをしたいですか?最終目標は何ですか? –