7

型が特定のジェネリック型かどうかを調べる必要があります。

class MyType<T> {}
var instance = new MyType<int>();
var type = instance.GetType();

このチェックは機能しませんが、これはチェックしたいものです。型がそのジェネリック型である場合、それが何であるかに関係なくT

type == typeof( MyType<> )

これは機能しますが、汚いと感じます。ではないため、間違っている可能性もありますFullName

type.Name == typeof( MyType<> ).Name

これを行う方法があると思いますが、見つけられませんでした。IsAssignableFrom親の 1 つではなく、現在の型が等しいかどうかを知る必要があるため、使用は機能しません。

4

1 に答える 1

9

これは、オブジェクトの具象型が の場合に機能しますMyType<T>。から派生した型のインスタンスでは機能せず、 がインターフェイス型のMyType<T>場合は機能しません。MyType<T>

if (type.IsGenericType
    && type.GetGenericTypeDefinition() == typeof(MyType<>))
于 2013-05-02T02:53:32.067 に答える