Получить тип с использованием отражения

Я пытаюсь получить тип свойства моего класса, используя отражение, но возвращаю его только ******************* - как имя типа.

У меня есть объект MyObject actualData - он содержит свойство - "name" в качестве строки и "Item" в качестве моего типа DatumType

Когда я отлаживаю, я вижу, что actualData имеет 2 свойства, первый - тип строки, а второй - DatumType, но когда я использую это:

string typeName = actualData.getType().getProperty("Item").getType().Name - он возвращает мне *******************, а не DatumType

Вы видите, что я делаю неправильно? Я использую С# -.Net 4.0. Большое спасибо!

3 ответа

Вы возвращаете тип объекта ************ getProperty(). Попробуйте

string typeName = actualData.getType().getProperty("Item").PropertyType.Name;

Если вам нужен тип значения, назначенного в данный момент объекту через объект ************, вы можете вызвать:

string typeName = actualData.getType().getProperty("Item").GetValue(actualData, null).GetType().Name;

Но в этом случае вы также можете просто вызвать:

string typeName = actualData.Item.GetType().Name;


actualData.getType().getProperty("Item")

извлекает что-то типа ************.

Если вы спросите его тип:

actualData.getType().getProperty("Item").getType()

вы получаете именно то, что наблюдаете за вами.

Я подозреваю, что последний getType() не нужен.

Изменить: кто-то отменил этот ответ, который является несправедливым imho. Вопрос: "Вы видите, что я делаю неправильно?" и ответ на один getType слишком далеко правильный. Найти PropertyType в ************ легко, если запрашивающий человек знает, что он делает неправильно.

Для человека, который отклонил этот ответ: пожалуйста, по крайней мере, оставляйте комментарий в следующий раз, когда вы что-то понижаете. Stackoverflow имеет смысл, только если мы учимся друг у друга, а не только bash всех вокруг.


GetType() всегда возвращает тип текущего объекта, а не заостренный объект.

В вашем случае используйте string typeName = actualData.getType().getProperty("Item").PropertyType.Name

licensed under cc by-sa 3.0 with attribution.