宣言されたパラメータ名を持つジェネリッククラスの名前を生成したいとします。たとえば、ジェネリッククラスがあり、以下に示すようにインスタンス化されたインスタンスの場合は、"MyClass<P1,M>"
を印刷します。C#のジェネリック型のGenericTypeParametersへのアクセス
は今、私はmyInstance
のための私の型情報を取得してから、このような一般的な型定義:
// MyClass<int,string> type info here
var type = myInstance.GetType();
// MyClass<P1, M1> type info here
var genericType = type.GetGenericTypeDefinition();
デバッガは、すべてのパラメータ名と型情報付きgenericType
プロパティGenericTypeParametersを示しています。しかし、私はC#コードからそのコレクションにアクセスすることはできません。ランタイムタイプが内部であるため、genericType
をSystem.RuntimeTypeクラスにキャストできません。
ここで何とかGenericTypeParametersプロパティにアクセスする方法はありますか、ここにはありますか? 環境VS2015、.NET 4.6.1
@MichaelLiu:ああ、そうです、whoops、misread。削除し、編集して元に戻します。 –
恐ろしい!かなり多くのGetGenericArguments()は、デバッガで見ることのできるGenericTypeParametersプロパティを返します。今は混乱が起こった。 –