C#3.0扩展方法将扩展添加到基类型,使该类型的所有实例的实例合法。在C#中模拟IDispatchEx#
现在,我认识的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
等等等等等等等等,想想可能有办法做到这个...... [设计时间支持会很好,但是我可以没有]
是的,我可能可以用Visitor模式来做这个“实例增强”。 [不知道我是否可以得到syntally糖]
评论?
JerKimball,有趣的想法...谢谢... +1建议DLR ... – 2009-01-08 19:57:39