Как управлять во времени выполнения списком вызова Делегата?

Я хочу знать, как я иду об удалении отдельных делегатов из списка вызова родительского делегата.

<DelegateName>.RemoveAll();

Теперь я могу просто удалить все, и это будет работать только, чтобы получить идею в движении и видеть, если работы, которые это должно, но затем любым удаленным делегатам будет нужно добавление снова в RunTime!!!

так:...

foreach(Delegate d in <DelegateName>.getInvocationList)
{ // do something with 'D'?? }

Теперь, когда у меня есть доступ к 'D', я могу бросить его в.Remove (), но его requies два аргумента??? Я мог получить некоторую справку с этим?

Наконец, после того как делегат был удален, что лучший способ состоит в том, чтобы повторно добавить его снова? Таким образом, я предполагаю, что Отражение могло бы играть роль в этом, но Вам парни.

ОБНОВЛЕНИЕ:

По существу существует глобальный делегат, который имеет много событий, живущих в различных классах winforms, которые являются экземплярами его. Все эти события имеют обработчик, который обрабатывает событие, когда оно запущено. Делегат полностью наверху управляет всеми обработчиками, которые соответствуют его подписи, запущены. Я хочу иметь предосудительные отношения с этим делегатом наверху, я хочу удалить все обработчики и затем повторно добавить их во время выполнения. Таким образом, делегат наверху является многоадресным делегатом, и его список вызова является списком отдельных делегатов, которые в свою очередь указывают на один из четырех обработчиков, что я добавил. Я надеюсь, что это имеет смысл, это - общее представление о том, что, я делаю.

6
задан IbrarMumtaz 3 August 2010 в 13:29
поделиться