我想转发一个活动。目前我在构造函数中拦截了InnerEvent并像这样中继:
obj.InnerEvent+=(...)=>{
if(OuterEvent != null)
OuterEvent(...);
}
但它看起来很糟糕所以我发现可以在事件级别使用添加/删除关键字来完成中继:
event Handler OuterEvent{
add{ obj.InnerEvent+=value;}
remove{ obj.InnerEvent+=value;}
}
但此时我不能再提高我的OuterEvent了。我知道为什么它不可能直接成为可能(read here),但我无法找到一个不错的方法来继续提升我的OuterEvent。我应该像往常一样在构造函数中绑定和中继吗?什么是最好的技术?
答案 0 :(得分:1)
从某种意义上说,OuterEvent
在使用第二种方法时不再作为事件存在。它现在只是一种订阅obj
InnerEvent
的方式,因此OuterEvent
现在与InnerEvent
实际上是同一事件:没有代表支持仅调用该事件订阅者的OuterEvent
。因此,调用OuterEvent
的唯一方法是提升InnerEvent
。
解决方法是揭露从InnerEvent
以外提出obj
的方法,但我会考虑这种不良做法。如果您需要从外部类调用OuterEvent
,我更喜欢坚持使用第一种方法。在OuterEvent
真正仅转发InnerEvent
的情况下,第二种方法非常优雅。