抽象代表注册
本文关键字:注册 抽象 | 更新日期: 2023-09-27 18:24:28
是否可以通过创建Function或其他方法,以某种方式抽象以下if/else语句,从而使此操作更通用,减少"重复"代码?
我有2个不同的类(生命周期和选择)和4个代表类型,如以下示例:
foreach (Delegate d in delegates)
{
if (d.GetType ().Equals (typeof (LifeCycle.OnCreatedEvent)))
Lifecycle.OnCreatedHandlers += (LifeCycle.OnCreatedEvent) d;
else if (d.GetType ().Equals (typeof (LifeCycle.OnDeletedEvent)))
LifeCycle.OnDeletedHandlers += (LifeCycle.OnDeletedEvent) d;
else if (d.GetType ().Equals (typeof (Selection.OnSelectEvent)))
Selection.OnSelectHandlers += (Selection.OnSelectEvent) d;
else if (d.GetType ().Equals (typeof (Selection.OnDeselectEvent)))
Selection.OnDeselectHandlers += (Selection.OnDeselectEvent) d;
}
我已经考虑过泛型,但我真的不确定如何以一种适当的、兼容的方式抽象接收/转换部分,从而接受+=操作。
有什么建议吗?
谢谢!
怎么样:
foreach (Delegate d in delegates)
{
LifeCycle.OnCreatedHandlers += d as LifeCycle.OnCreatedEvent;
LifeCycle.OnDeletedHandlers += d as LifeCycle.OnDeletedEvent;
Selection.OnSelectHandlers += d as Selection.OnSelectEvent;
Selection.OnDeselectHandlers += d as Selection.OnDeselectEvent;
}
它更干净一些,并且不存在测试然后转换为不同类型的潜在运行时问题。我相信这里的+= null
不会有任何影响。