我有以下事件代码:
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
首先,有没有更好的方法来处理上述情况?
其次,在运行时,相同的事件/委托(对于任何查找)总是会触发,或者我在第二个字典中得到返回值的空值。