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