我正在对一个现有的项目进行一些维护,这个项目有静态服务类出现在waazoo上。
基本上我已经成功地将它们隐藏在一个接口+包装类后面,它直接调用现有的静态。
BUT
有一些现有的静态类具有事件处理程序,并且在属性中包装它们将无法工作,因为EventHandler只能位于+ =或 - =的左侧。
我能想到的唯一方法是提供在包装类中添加和删除EventHandlers的方法,然后访问静态类事件处理程序。
有没有办法让现有的+ =和 - =不需要改变?
例如,静态类的现有用法是
SomeExistingStaticClass.SomeEventHandler += MyMethod;
重构为
IStaticInterface myClass = new WrapperSomeExistingStaticClass();
myClass.SomeEventHandler += MyMethod;
并且在包装器中我试图将SomeEventHandler作为具有这样的getter的属性
public EventHandler SomeEventHandler
{
get
{
return SomeExistingStaticClass.SomeEventHandler;
}
}
我是否缺少某些东西,或者这是在包装类上使用AddHandler和RemoveHandler方法的最佳解决方案?
答案 0 :(得分:0)
如何在包装器类中实现新事件,然后实现自定义事件访问器?在这里,您可以从静态服务类重新路由事件,并使您的事件处理程序保持同步。有关简单示例,请参阅here (custom event accessors)。