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

本文关键字:静态类 EventHandlers 接口 隐藏 | 更新日期: 2023-09-27 17:51:07

我正在对一个现有的项目做一些维护,该项目有静态服务类从waazoo中出来

基本上,我已经成功地将它们隐藏在直接调用现有静态的接口+包装器类后面。

,

有一些现有的静态类具有事件处理程序,并且将这些事件处理程序包装在属性中将无法工作,因为EventHandler只能在+=或-=的左侧。

我能想到的唯一方法是提供在包装器类中添加和删除eventhandler的方法,然后访问静态类的事件处理程序。

是否有一种方法可以做到这一点,使现有的+=和-=不需要改变?

例如,静态类的现有用法是
SomeExistingStaticClass.SomeEventHandler += MyMethod;
重构

IStaticInterface myClass = new WrapperSomeExistingStaticClass();
myClass.SomeEventHandler += MyMethod;

在包装器内部,我尝试将SomeEventHandler作为带有getter的属性,就像这样

public EventHandler SomeEventHandler
{
    get
    {
        return SomeExistingStaticClass.SomeEventHandler;
    }
}

是否有一些我错过了,或者是最好的解决方案在这里使用AddHandler和RemoveHandler方法包装类?

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

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