获取类的字段类型

时间:2016-02-21 19:19:04

标签: c# class generics reflection

我有这样的课程:

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 Ttypeof(T).GetFields().ToArray()按预期返回两个字段a of type Ab of type B。但是当我想获得第一个字段的类型时,就像这样: Type y = x[0].GetType();,y的值为System.Reflection.RtFieldInfo,而不是A

为什么会这样?我需要上课A,以便我可以得到它的字段......

1 个答案:

答案 0 :(得分:2)

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

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

FieldInfo是一个描述字段及其类型的类;并且其描述的字段的类型信息存储在FieldInfo