Как реализовать «Ручки» через Codedom - PullRequest
2 голосов
/ 15 августа 2010

Я пытался выяснить, как добавить обработчик в метод с использованием 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 Ответ

3 голосов
/ 15 августа 2010

Handles это просто синтаксический сахар, vb.net предлагает вам для вашего удобства. Под капотом он превращается в:

AddHandler btnStart.Click, AddressOf Startup

Так что я думаю, что это будет невозможно. Вы должны попытаться использовать инструкцию CodeAttachEvent вместо

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

Другая возможность - использовать CodeSnippetTypeMember (), как описано здесь

Обходной путь для частичного метода VB.NET с использованием CodeDom?

...