5

ジェネリック パラメータを使用せずに、ジェネリック型の型を確認することはできますか?

たとえば、次のようなことができるようにしたいと考えています (実際の型の名前は無実を保護するために変更されています)。

var list = new List<SomeType>();

...

if (list is List)
    {
    Console.WriteLine("That is a generic list!");
    }

上記のコードは現在、次のエラーを生成します。

Using the generic type 'System.Collections.Generic.List<T>' requires 1 type arguments

これを回避する方法はありますか?できれば、簡潔で、汎用パラメーターを持たない型で機能するもの (つまり、「myString が List の場合」) が望ましいです。

4

1 に答える 1

9

次のように確認できます。

var type = list.GetType();
if(type.IsGenericType && 
   type.GetGenericTypeDefinition().Equals(typeof(List<>)))
{
    // do work
}
于 2013-04-27T11:02:00.833 に答える