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

ハンドルは、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 に答える