获取类字段的类型

本文关键字:类型 字段 获取 | 更新日期: 2023-09-27 18:35:39

>我有这样的类:

class A
{
    public int x;
    public int y;
}
class B
{
    public int x;
    public int y;
}
class C
{
    public A a;
    public B b;
}
public class Test<T> where T : class, new()
{
     public Test()
     {
        FieldInfo[] x = typeof(T).GetFields().ToArray();
        Type y = x[0].GetType();
     }
}

当我宣布Test<C> c = new T typeof(T).GetFields().ToArray() 按预期返回a of type Ab of type B两个字段。但是当我想获取第一个字段本身的类型时,如下所示: Type y = x[0].GetType();,y 的值是 System.Reflection.RtFieldInfo 而不是A

为什么会这样?我需要去上课A这样我才能得到它的字段和......

获取类字段的类型

您可以在返回的FieldInfo上使用FieldType

GetType()返回当前对象的类型,即 FieldInfo ,而不是它描述的类型。

FieldInfo 是一个描述字段及其类型的类;它描述的字段的类型信息存储在 FieldInfo 中。