Хобрук: Ваш путь к мастерству в программировании

Делегируйте поля, связанные с событиями и отражением

теперь у меня более теоретический вопрос, связанный с событиями и размышлениями. Возникает вопрос: "Возможно или невозможно получить поле типа делегата, связанное с событием, через EventInfo?"

По сути, когда вы определяете событие (неявно), компилятор добавляет в ваш класс приватное поле делегата (очевидно, делегат имеет тот же тип делегата, что и связанный с только что объявленным вами событием). Можно ли получить это поле через отражение, точнее, через EventInfo?

А когда вы определяете событие явно?

Заранее спасибо. ваше здоровье ;)


Ответы:


1
myEvent.GetType().GetGenericArguments()[0]

Но убедитесь, что myTest не равен нулю, прежде чем вызывать его. Если вы хотите использовать EventInfo:

typeof (Program).GetEvent("myTest").EventHandlerType.GetGenericArguments()[0]

или вы хотели тип делегата?

typeof (Program).GetEvent("myTest").EventHandlerType
17.01.2010
  • Ваш ответ хорош, но я спрашивал, можем ли мы использовать какой-либо метод класса EventInfo для получения поля делегата, связанного с событием. 17.01.2010
  • Или вы имеете в виду не тип, а указатель на каждого из добавленных в событие делегатов? 17.01.2010
  • Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.