我一直在尝试弄清楚如何使用Codedom为一个方法添加一个处理程序,但是我没有走得太远。
我想通过Codedom重现的方法是:
Private Sub Startup() Handles btnStart.Click
''# Do work
End Sub
该方法很容易创建:
Dim StartupMethod As New CodeMemberMethod
StartupMethod.Name = "Startup"
StartupMethod.Attributes = MemberAttributes.Private
但我无法弄清楚如何添加Handles btnStart.Click
。我看过CodeAttachEventStatement
,但我认为它不能对方法做Handles
。
有谁知道如何实现这个目标?
编辑:下面的解决方案适用于VB,但不适用于C#,因为处理程序正在寻找处理事件而不是方法。
答案 0 :(得分:3)
Handles只是一种语法糖vb.net为您提供方便。 在引擎盖下它转换为:
AddHandler btnStart.Click, AddressOf Startup
所以我认为这是不可能的。您应该尝试使用CodeAttachEvent语句
http://msdn.microsoft.com/en-us/library/system.codedom.codeattacheventstatement.aspx
另一种可能性是使用此处所述的CodeSnippetTypeMember()