У меня проблема с asp.net и сторонним элементом управления, встроенным в пользовательский элемент управления. Я хочу назначить обработчик событий одному из событий стороннего элемента управления. Это разрешает назначение, но обработчик событий никогда не трогается. Я считаю, что либо нарушаю назначение обработчика событий, либо назначаю его не в то время. Я хочу отслеживать назначение обработчика событий через отладку. Как я могу проверить, какие обработчики событий назначены элементу управления в отладке?
2 ответа
Если у вас есть исходный код пользовательского элемента управления, вы можете добавить код ведения журнала в добавить/удалить аксессоры для события.
В отладчике VS вы также можете проверить содержимое поля _invocationList
в событии (базовый класс MulticastDelegate). Развернув его, вы увидите список подключенных обработчиков.
Используя окно Watch (или Locals или Autos) в Visual Studio, вы можете копаться в делегате, содержащем событие (при условии, что это стандартное событие), и посмотреть, какие методы он содержит.
РЕДАКТИРОВАТЬ:
Если у события есть только один обработчик, вы увидите его в base.base.Method
в поле делегата. Если у него несколько обработчиков, base._invocationList
будет массивом делегатов одного метода; вы можете проверить base.base.Method
в каждом из них.
Если _invocationList
делегата не равен нулю, его base.base.Method
будет игнорироваться.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.