假设我有以下类结构:public class Outer<T>{ public class Inner<U> { }}还有一些代码:var testType = typeof(Outer<string>.Inner<int>);如何从变量中获取构造的泛型类型typeof(Outer<string>)或泛型的值?typeof(string)testType
1 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
有趣 - 似乎外部类型的泛型参数被投射到内部类型:
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]
- 1 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消