如何通过Codedom实现“句柄”

时间:2010-08-15 13:45:38

标签: c# vb.net event-handling handle codedom

我一直在尝试弄清楚如何使用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#,因为处理程序正在寻找处理事件而不是方法。

1 个答案:

答案 0 :(得分:3)

Handles只是一种语法糖vb.net为您提供方便。 在引擎盖下它转换为:

AddHandler btnStart.Click, AddressOf Startup

所以我认为这是不可能的。您应该尝试使用CodeAttachEvent语句

http://msdn.microsoft.com/en-us/library/system.codedom.codeattacheventstatement.aspx

另一种可能性是使用此处所述的CodeSnippetTypeMember()

Workaround for VB.NET partial method using CodeDom?