DLRは見ていない場合は削除します。私だけで動作し、簡単なものを投稿します静的イベントプロパティでは、+=
と-=
を実行すると、次の同等の操作が動的に実行されます。
//d.MyEvent += new EventHandler(this.MyHandler);
var temp = d.MyEvent; //temp is null
temp += new EventHandler(this.MyHandler) //temp is now MyHandler
d.MyEvent = temp; //set it back
//d.MyEvent -= new EventHandler(this.MyHandler);
var temp = d.MyEvent; //temp is MyHandler
temp -= new EventHandler(this.MyHandler) //temp is now null
d.MyEvent = temp; //set it back
EventHandlerはそれだけであなたが左に何もないように、最後に設定したプロパティは、nullにする必要があります削除されているイベントハンドラを持っていたので、もしあなたが、コレクションのようにそれを考える必要がありますのでMulticastDelegateです。ミックスでさらに多くのイベントが追加された場合は、より明確になります。
//d.MyEvent += new EventHandler(this.MyHandler);
var temp = d.MyEvent; //temp is null
temp += new EventHandler(this.MyHandler) //temp is now MyHandler
d.MyEvent = temp; //set it back
//d.MyEvent += new EventHandler(this.MyHandler2);
var temp = d.MyEvent; //temp is MyHandler
temp += new EventHandler(this.MyHandler2) //temp is now MyHandler,MyHandler2
d.MyEvent = temp; //set it back
//d.MyEvent -= new EventHandler(this.MyHandler);
var temp = d.MyEvent; //temp is MyHandler,MyHandler2
temp -= new EventHandler(this.MyHandler) //temp is now MyHandler2
d.MyEvent = temp; //set it back
あなたは違っそれを格納し、追加を必要とし、あなたの行動をラップし、あなたのTryGetにそれを返すことを確認するためにストレージ・クラスを作り、その後削除する必要があります。
public DelegateStoreage<T>{
public void Add(T del){
//Do your stuff
}
public void Remove(T del){
//Do your stuff
}
public static T operator +(DelegateStoreage<T> x, T y)
{
x.Add(y)
return x
}
public static T operator -(DelegateStoreage<T> x, T y)
{
x.Remove(y)
return y;
}
}
ナー、それは違いはありませんでした。値はまだnullです。 – fettsnoken
ああ、申し訳ありません。私はそのパターンを生成されたコードに多く見ました。 WCFから。 – Rup