у меня есть событие следующим образом:Удаление делегата события
public event EventHandler<CustomEventArgs> RaiseCustomEvent;
Вот код для удаления делегата из приведенного выше события, что я работаю:
public void RemoveDelegate(Delegate del)
{
RaiseCustomEvent -= (EventHandler<CustomEventArgs>)del;
}
Вот некоторые код, который я написал для удаления делегата, где я знаю, название события:
public void RemoveRaiseCustomEventDelegate(Delegate del, string eventName)
{
var field = this.GetType().GetField(eventName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField);
var fieldValue = field.GetValue(this) as EventHandler<CustomEventArgs>;
fieldValue -= (EventHandler<CustomEventArgs>)del;
}
в приведенном выше коде fieldValue
имеет значение null, однако при возникновении события все еще есть абонент.
Могу ли я, пожалуйста, помочь удалить делегата из события, где у меня есть только имя события?
, когда 'fieldValue' установлено нулевое значение? Когда он назначен или когда 'del' не подписывается? – nozzleman
Когда del отписана. – user3736648