При использовании делегата я могу использовать Delegate.GetInvocationList () Метод для получения списка вызовов делегата во время выполнения.
Есть ли способ получить доступ к списку подписчиков, который был связан с событием? Я запустил код из этого примера (SO # 1237001) , и непосредственное окно позволило мне преобразовать событие SecondChange в System.MultiCastDelegate и затем вызвать метод GetInvocationList.
Однако в моем сценарии я работаю с System.Windows.Forms.DataGridView и хотел бы проверить список вызовов события CellClick во время выполнения. Однако, когда я пытаюсь использовать любой тип приведения на CellClick, я получаю следующую ошибку:
Событие
'System.Windows.Forms.DataGridView.CellClick'
может появляться только на левой стороне
из + = или - =
Я вижу, что в объявлениях этих событий явно есть различия. В примере с Clock событие объявлено так:
public event Func<DateTime, bool> SecondChange;
А в DataGridView событие объявляется так:
[SRDescription("DataGridView_CellClickDescr"), SRCategory("CatMouse")]
public event DataGridViewCellEventHandler CellClick
{
add
{
base.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCLICK, value);
}
remove
{
base.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCLICK, value);
}
}
Почему можно вызывать GetInvocationList в примере Clock, но не в событии DataGridView? Есть ли способ для меня получить информацию того же типа из события DataGridView, которое возвращает GetInvocationList?