首页 新闻 会员 周边 捐助

C#反射如何判断属性的类型是泛型的类型

0
悬赏园豆:20 [已解决问题] 解决于 2019-11-25 12:21

比如有下面的类
public class Student
{
public int Age { get; set; }

    public string Name { get; set; }
}

public class Test<T>
{
public string Name { get; set; }

    public T Data { get; set; }

    public Student Stu { get; set; }
}

var type=typeof(Test<Student>);
type里面的属性反射出来 Data 和 Stu都是Student 类型, 我想知道如何判断出 Data的类型是泛型参数T,请问可以判断出来吗? 我找了半天反射出来的信息,好像都是一样的!!

cvxcrfa的主页 cvxcrfa | 初学一级 | 园豆:34
提问于:2019-11-22 16:50

请问一下问题解决没有?

小小高 4年前

@小小高: 解决了,我根据具体实例化的泛型,获取到它的FullName,根据FullName检索Assembly里面的类, 就获取到了原始的样子。

cvxcrfa 4年前
< >
分享
最佳答案
0

.NET Core 中下面的代码可以搞定

var type = typeof(Test<>);
收获园豆:10
dudu | 高人七级 |园豆:30948 | 2019-11-22 17:18
其他回答(1)
0

Nuget 安装  Mono.Cecil

 var path = typeof(Test<Student>).Assembly.Location;
            var assembly = AssemblyDefinition.ReadAssembly(path);
            var type = assembly.MainModule
              .GetTypes().FirstOrDefault(m => m.FullName == "bwTest.Test`1");
            foreach (var item in type.Properties)
            {
                Console.WriteLine($"属性名{item.Name} 属性类型{item.PropertyType.ToString()}");
            }
收获园豆:10
小小高 | 园豆:1307 (小虾三级) | 2019-11-22 17:48

可以不用安装这个的

支持(0) 反对(0) cvxcrfa | 园豆:34 (初学一级) | 2019-11-25 12:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册