Отражение пользовательских атрибутов на свойства - PullRequest
0 голосов
/ 07 мая 2018

У меня есть этот базовый класс с одним обычаем Attribute

public class Foo
{
    [MyAttribute]
    public DateTime CurrentDate {get;set;}
}

Я использую отражение, чтобы увидеть, есть ли на CurrentDate MyAttribute.

Я создаю новый экземпляр Foo:

var foo = new Foo();

Я размышляю над foo:

foo.GetType().GetProperty("CurrentDate").GetCustomAttributes(true);

это дает мне мои собственные атрибуты.

Однако, если я размышляю так:

foo.CurrentDate.GetType().GetCustomAttributes(true);

он возвращает то, что кажется нативными атрибутами, а моего там нет.

Итак, мой вопрос, почему он это делает?

1 Ответ

0 голосов
/ 07 мая 2018

foo.CurrentDate.GetType() вернет typeof(DateTime). Это потому, что foo.CurrentDate объявлен как DateTime. GetType() возвращает информацию о типе значения, которое вы ему даете, а не информацию о свойстве, из которого получено значение.

Вы хотите сделать что-то вроде foo.GetType().GetProperty(nameof(foo.CurrentDate)).GetCustomAttributes()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...