次のイベントコードがあります。
public delegate void SomeEventHandler(SomeEventArgs eventArgs);
event SomeEventHandler someEvent;
私のシナリオには、SomeType1 ごとに任意の数の SomeType2 があり、それに関連付けられたイベントがあるようなイベントの使用が含まれます。
例、
public event SomeEventHandler EventA1EventB1
public event SomeEventHandler EventA1EventB2
public event SomeEventHandler EventA1EventB3
...
public event SomeEventHandler EventA1EventBn
に続く、
public event SomeEventHandler EventA2EventB1
...
上記の任意の数の組み合わせ (およびやや乱雑なコード) を考慮して、次の方法を選択しました。
Dictionary<SomeType1, Dictionary<SomeType2, SomeEventHandler>>
もちろん、問題は、上記のイベント宣言を辞書に追加できないことです。このために、私はちょうど使用しました、
delegate { }
上記の辞書を次のように作成します。
var someType2Dictionary = Dictionary<SomeType2, delegate { }>();
someType1Dictionary.Add(someType1, someType2Dictionary);
後で、私はそう見上げます、
someType1Dictionary[someLookUpKey1][someLookUpKey2] += someEventOfTypeSomeEventHandler
まず、上記のシナリオに対処するためのより良い方法はありますか?
次に、実行時に同じイベント/デリゲート (検索用) が常に発生するか、2 番目のディクショナリで返された値に null が返されます。