の期間中、イベントへの登録:は、私はしばしば、次のコードに遭遇して使用してブロック
myService.SomeEvent += listener;
myService.DoSomething();
myService.SomeEvent -= listener;
これは素晴らしいですが、私たちはよりよい方法でこれを行うことができれば、それは素晴らしいことです。 - =(正当な理由のために)
myService.SomeEventのみ+ =またはの左側に表示されますので、残念ながら、これをC#で禁止されてusing(EventScope.Start(myService.SomeEvent, listener)){
myService.DoSomething();
}
:私のような何かを考えていました。私の質問は、私が他にどんな選択肢を持っているかです。私は「を使用して」構文を使用してと結婚していないよ明確にするため
using(EventScope.Start(myService, "SomeEvent", listener){
myService.DoSomething();
}
:理想的には私はこれが(私はすでに実装されてきた)反射を除外し、次の操作を実行し、安全種類、なりたいですあなたはそれが言語の歪曲だと言うことができると主張することができます。他のオプションは高く評価されます!
ええ、それはあなたが離れて得られる最高のように、文字列を渡して、それからEventInfoオブジェクトを構築するようです。 – Noldorin
私はそれが事実でないことを望んでいた...それはうまく動作しますが、理想的ではありません。 – jonnii
スタイルの問題として、私はtry-finallyを使用します。これは、操作の意味論は、「イベントを購読する、事を行う、いつでも購読を停止する」ことを強調している。使い捨てのオブジェクトを使用することは、「この物は積極的に清掃する必要があるリソースがある」ことを強調しています。私は、プログラムセマンティクスとクリーンアップメカニズムを混ぜるのは嫌いです。私は「倒錯」までは行かないと思っていますが、少なくとも悪臭を覚える練習にはあります。 –