GOOGLE ADS

среда, 4 мая 2022 г.

Получить тип поля класса

У меня есть такие классы:

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.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...