2015-02-09 3 views
0

Я застрял в методе получения модификаторов доступа объекта EventInfo (поле отраженного события в C# .NET).Модификаторы доступа EventInfo

модификаторов доступа Я имею в виду: государственный/частный/защищенный/внутренний и статический, и т.д. только для чтения

ответ

3

В теории (на уровне IL) есть в основном три члена, составляющие события:

  • добавить
  • удалить
  • повышение

Вы можете получить доступ к каждому из них с помощью отдельного EventInfo (AddMethod, RemoveMethod, RaiseMethod) и проверьте модификатор доступа для каждого из них. Для событий, объявленных в C#, я бы не ожидал никакого метода raise, а методы add/remove имели бы такую ​​же доступность.

+0

Это умный. Каждый метод EventInfo должен иметь одинаковые модификаторы, правильно? – marty

+1

@marty: Не обязательно. Я мог бы представить, что публичное добавление/удаление, но частный рейз, например. Не то, что компилятор C# использует рейз вообще. Было бы странно иметь публичный add, но private remove - но я не проверял, будет ли это недопустимым * в IL. (Невозможно представить его на C#, по крайней мере.) –

+0

Вы правы, что C# не разрешает объявлять метод добавления/удаления метода с любым модификатором вообще. Он также не поддерживает декларирование пользовательского аксессора для метода повышения. Итак, метод raise объявляется по умолчанию всегда? – marty

Смежные вопросы