Получи Private Func <T>Участник с Reflection - PullRequest
4 голосов
/ 21 декабря 2010

У меня есть класс с определением частного члена, например:

[MyCustomAttribute]
private Func<String, String> MyFuncMember = (val) => val + " World! ";

, и я пытаюсь получить атрибут, который я над ним ставлю.Теперь я попробовал с Type.GetMembers(), Type.GetFields() и Type.GetMethods с соответствующими BindingFlags (BindingFlags.NonPublic), и я просто не могуполучить этот член.Как я могу получить это?Может ли это быть проблемой, если класс, в котором определен класс * sealed?

Заранее спасибо за ответы.

Ответы [ 2 ]

3 голосов
/ 21 декабря 2010

Попробуйте использовать это в качестве флагов привязки:

BindingFlags.NonPublic | BindingFlags.Instance

Без флага BindingFlags.Instance он не сможет найти поле вашего экземпляра.

В целом, когда вы используете Type.GetField вам нужно установить:

  • один (или оба) из BindingFlags.Instance и BindingFlags.Static

    и

  • один (или оба) из BindingFlags.Public и BindingFlags.NonPublic.

Оператор | объединяет флаги, используя двоичный файл или операцию, что означает, что оба флага установлены.*

1 голос
/ 21 декабря 2010
typeof(YourType)
    .GetMember("MyFuncMember", BindingFlags.Instance | BindingFlags.NonPublic)
    .GetCustomAttributes(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...