为了账号安全,请及时绑定邮箱和手机立即绑定

使用反射从 C# 中嵌套类型的 DeclaringType 获取泛型类型

使用反射从 C# 中嵌套类型的 DeclaringType 获取泛型类型

Go
PIPIONE 2022-10-15 14:39:21
假设我有以下类结构: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]


查看完整回答
反对 回复 2022-10-15
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信