Я хочу знать, как мне удалить отдельные делегаты из списка вызовов родительского делегата.
<DelegateName>.RemoveAll();
Теперь я могу просто удалить все, и это сработает, просто чтобы привести идею в движение и посмотреть, работает ли она, как это должно быть, но тогда все удаленные делегаты должны будут снова добавить в RunTime !!!
так: ...
foreach(Delegate d in <DelegateName>.getInvocationList)
{ // do something with 'D'?? }
Теперь, когда у меня есть доступ к 'D', я могу поместить его в .Remove (), но это требует двух аргументов ??? Могу ли я получить помощь с этим, пожалуйста?
Наконец, после удаления делегата, каков наилучший способ его повторного добавления?
Поэтому я предполагаю, что Reflection может сыграть в этом роль, но вам, ребята.
ОБНОВЛЕНИЕ:
По сути, существует глобальный делегат, в котором много событий, живущих в разных классах winforms, которые являются его экземплярами. Все эти события имеют обработчик, который обрабатывает событие при его запуске. Весь делегат сверху управляет всеми обработчиками, которые соответствуют его сигнатуре. Я хочу возиться с этим делегатом наверху, я хочу удалить все обработчики, а затем повторно добавить их во время выполнения. Таким образом, делегат наверху является многоадресным делегатом, а его список вызовов - это список отдельных делегатов, которые в свою очередь указывают на один из четырех добавленных мной обработчиков. Я надеюсь, что это имеет смысл, это общее представление о том, что я делаю.