C# 3.0 扩展方法向基类型添加扩展,使得在该类型的所有实例上调用该方法都是合法的。
现在,我知道的 JavaScript 实现了 IDispatchEx,通过它可以将方法添加到特定实例。
那么如何将一组方法添加到 C# 类的“实例”中呢?我知道这是动态与静态语言的圣战领域。:) 让我澄清一下我的意图不是那样。
我只是希望能够根据实现该接口的类向接口添加一组事件。
我能够使用泛型做到这一点
inteface ISample<T> { T SupportedEvents; }
class Sample : ISample<UIWidgetEvent> { }
class Sample2 : ISample<NonVisualUIWidget> { }
class UIWidgetEvent { public EventHandler Clicked; }
class NonVisualUIWidget {public EventHandler Expired;}
class TestSample
{
public void Test()
{
new Sample().SupportedEvents.Clicked += ...
new Sample2().SupportedEvents.Expired += ...
}
}
然后我不喜欢SupportedEvents
我想说
new Sample().Clicked +=...
然后我认为 JavaScript(我知道C#
不是JS
:))... AND IDispatchEx
, IL Weaving
,Reflection.Emit
等等等等,并认为可能有办法做到这一点... [设计时支持会很好,但我可以没有]
是的,我可能可以用访客模式来做这个“实例增强”。[不确定我是否可以得到合成糖]
评论?