からデリゲートを削除します。は、次のように私がイベントを持っているイベント
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に設定されますが、イベントが発生すると依然としてサブスクライバが存在します。
私はイベント名のみを持つイベントからデリゲートを削除する助けをしてもらえますか?
の?それが割り当てられているとき、または 'del'がunsubscribedされているとき? – nozzleman
delが登録解除されている場合。 – user3736648