1

次のようなジェネリック型があります。

SomeType<T>
SomeType<T1, T2>

それらのタイプのみを持っています:

Type type1 = typeof(SomeType<T>);
Type type2 = typeof(SomeType<T1, T2>);

Tfromtype1
とfromの型T1を取得する方法 は?T2type2

例:
を使用typeof(SomeType<int>)すると、 のみが返されSomeType´1ます。
しかし、私はint型を取得する方法を探してtypeof(int)います。

4

2 に答える 2

4

クラスでGetGenericArgumentsメソッドを使用Typeする必要があります。これは、オープン ジェネリック型を指定するために使用した特定の型を返します。あなたのケースの例:

var type = typeof(SomeType<int, string>);

foreach(Type closedType in type.GetGenericArguments())
{
    Console.WriteLine(closedType);
}

どこ

class SomeType<T1, T2> {}

印刷されます:

System.Int32
System.String
于 2013-08-06T15:50:33.417 に答える
0

場合によって異なりますSomeTypeが、私は次のようなものをお勧めします。

Type innerType = type1.GetType().GetProperty("Item").PropertyType;
于 2013-08-06T15:52:28.370 に答える