スーパークラスの宣言された型を持つリストからのリスト型の取得

c# reflection
スーパークラスの宣言された型を持つリストからのリスト型の取得

哺乳類と爬虫類が動物のサブクラスである3つのクラス(動物、哺乳類、および爬虫類)があります。

哺乳類のみ、または爬虫類のみが生息する動物のリストがあります。 実行時にリスト内の型を取得したい。

リスト自体を使用しても機能しません。

Type type = myList.GetType().GetProperty("Item").PropertyType;
// type -> Animal

Type type = myList.GetType().GetGenericArguments()[0];
// type -> Animal

このリストは別のクラスのプロパティでもあるため、Biomeと呼びましょう。 バイオームには、爬虫類(リスト)と哺乳類(リスト)の2つのプロパティがあります。 インスタンスにコレクションプロパティが指定されている場合、アイテムタイプを見つけることができますか?

  0  0


ベストアンサー

リストのタイプではなく、リスト内のアイテムのタイプを取得します。

Type type = myList[0].GetType();

2


NET 4.0を使用していて、リストを作成するときに要素の種類を知っている*場合、次のようにhttp://msdn.microsoft.com/en-us/library/dd799517.aspx[Generic Covariance]を適用できます。
List myList = new List();

これにより、Reflectionを使用して適切な出力が生成されます。

0


タイトルとURLをコピーしました