2

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

4

1 回答 1

3

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

AddHandler btnStart.Click, AddressOf Startup

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

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

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

使用 CodeDom 的 VB.NET 部分方法的解决方法?

于 2010-08-15T13:58:26.670 回答