У меня есть такие классы:
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.
Комментариев нет:
Отправить комментарий