У меня есть такие классы:
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 A
и b of type B
, как и ожидалось. но когда я хочу получить тип самого первого поля, например:
Type y = x[0].GetType();
значение y равно, System.Reflection.RtFieldInfo
а неA
Почему это так? Мне нужно добраться до класса A
, чтобы получить его поля и...
Решение проблемы
Вы можете использовать FieldType
для этого возвращенное FieldInfo
.
GetType()
возвращает тип текущего объекта, которым является FieldInfo
, а не тот тип, который он описывает.
FieldInfo
это класс, описывающий поле и его тип; а информация о типе для описываемого поля хранится в FieldInfo
.
Комментариев нет:
Отправить комментарий