在接口后面隐藏一个静态类 - EventHandlers

时间:2014-03-20 21:31:20

标签: c# events interface

我正在对一个现有的项目进行一些维护,这个项目有静态服务类出现在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方法的最佳解决方案?

1 个答案:

答案 0 :(得分:0)

如何在包装器类中实现新事件,然后实现自定义事件访问器?在这里,您可以从静态服务类重新路由事件,并使您的事件处理程序保持同步。有关简单示例,请参阅here (custom event accessors)