多くのイベントを使用する C# (.NET 4.6.1) プロジェクトがあります。私はすべてのイベント ハンドラーを新しい WeakEventManager パターンに移動したいと思っています。これは、メモリー リークを回避するためにハンドラーの登録解除について果てしなく心配することを避けるためです。
ただし、パフォーマンスについて多くのテストを行う必要があり、2 つの方法を簡単に切り替える方法が必要です。これまでのところ、次の行に沿ってこれを行うために条件付きコンパイルを使用してきました。
#if WeakEvents
WeakEventManager<EventSource,EArgs>.AddHandler(source, "TheEvent", handler);
#else
source.TheEvent += handler;
#endif
これは機能しますが、面倒です。理想的には、これを隠すクラスを作成したいと思います。つまり、いずれかのメソッドを内部的に使用できるクラスを作成します。次に、すべてのソースを変更して、ハンドラーを新しいクラスにアタッチし、簡単に切り替えることができます (または、将来的に新しいメソッドに移動することもできます)。
ただし、イベントをパラメーターとして渡すことができないため、そのクラスの記述方法がわかりません。また、ハンドラー/名前で何らかのリフレクションが行われる必要がありますが、これは私を超えています。
それを行う簡単な方法はありますか?