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