假设我有以下类结构:
public class Outer<T>
{
public class Inner<U>
{
}
}
还有一些代码:
var testType = typeof(Outer<string>.Inner<int>);
我如何从变量
testType
中获取构造的泛型类型 typeof(Outer<string>)
,或者泛型 typeof(string)
的值?假设我有以下类结构:
public class Outer<T>
{
public class Inner<U>
{
}
}
还有一些代码:
var testType = typeof(Outer<string>.Inner<int>);
testType
中获取构造的泛型类型 typeof(Outer<string>)
,或者泛型 typeof(string)
的值?有趣 - 看起来外部类型的泛型参数被映射到内部类型:
var testType = typeof(Outer<string>.Inner<int>);
var outerType = testType.DeclaringType;
var outerTypeGenericParam = outerType.GetGenericArguments();
var testTypeGenericParam = testType.GetGenericArguments();
Console.WriteLine(outerType); // Test+Outer`1[T]
Console.WriteLine(outerTypeGenericParam[0]); // T
Console.WriteLine(testTypeGenericParam[0]); // System.String
Console.WriteLine(testTypeGenericParam[1]); // System.Int32
这里放入您的代码
testType.GetGenericArguments()[0]
testType.GetGenericArguments()[0]
吗?testType.DeclaringType.GetGenericArguments()[0]
给我的是typeof(T)
。无论如何,发现得好 :) - Shane