C#で IEnumerableコレクションの元になるクラス・型を調べる

C#で定義された変数から、利用された型(Class)が何なのかを調べるときに利用できるコードです。通常の変数の場合はもちろんですが、Genericクラスで、Collectionになっている型も調べる事ができます。

通常変数の型を調べたい時。

変数 obj(インスタンス)
MyClass 比較したい型(クラス)

if(obj.GetType() == typeof(MyClass)

これでobjが、どのクラスで初期化されたか、インスタンス化されたかが分かります。

では、IEnumerableで定義された変数の場合はどうやって
Objが、IEnumerableで定義されコレクションになっている時にその元になるTの型は何なんだ?Tで利用されているクラスは何だろう?と調べたい時

定義された変数
IEnumerable collection

比較したい型(クラス)
MyClass

例1
if (collection.GetType().GetProperty(“Item”).PropertyType == typeof(MyClass))

例2
if (collection.GetType().GetGenericArguments()[0] == typeof(MyClass))

この方法で、IEnumerableコレクションの元になるクラス・型を調べる事ができます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)