比如有下面的类
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,请问可以判断出来吗? 我找了半天反射出来的信息,好像都是一样的!!
.NET Core 中下面的代码可以搞定
var type = typeof(Test<>);
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()}"); }
可以不用安装这个的
请问一下问题解决没有?
– 小小高 4年前@小小高: 解决了,我根据具体实例化的泛型,获取到它的FullName,根据FullName检索Assembly里面的类, 就获取到了原始的样子。
– cvxcrfa 4年前