2010-08-15 3 views
2

나는 Codedom을 사용하여 메서드에 핸들러를 추가하는 방법을 알아 내려고 노력했지만 아주 멀리하지는 않습니다.Codedom을 통해 "핸들"을 구현하는 방법

Dim StartupMethod As New CodeMemberMethod 
StartupMethod.Name = "Startup" 
StartupMethod.Attributes = MemberAttributes.Private 

하지만 난 Handles btnStart.Click를 추가하는 방법을 알아낼 수 없습니다 :

Private Sub Startup() Handles btnStart.Click 
    ''# Do work 
End Sub 

방법은으로 만들 수있을만큼 간단합니다 :

내가 된 CodeDom을 통해 재현하고자하는 방법이다. CodeAttachEventStatement을 보았습니다. 그러나이 방법을 사용하면 Handles을 수행 할 수 있다고 생각하지 않습니다.

누구든지 이것을 달성하는 방법을 알고 있습니까?

EDIT : 아래의 솔루션은 VB에서 작동하지만 처리기가 메서드가 아닌 이벤트를 처리하기 때문에 C#에서는 작동하지 않습니다.

답변

3

핸들은 구문상의 설탕입니다 vb.net은 사용자의 편의를 위해 제공합니다.

AddHandler btnStart.Click, AddressOf Startup 

그래서 나는 그것이 가능하지 않을 것이라고 생각 : 후드에서 은이 변환됩니다. 당신은 CodeAttachEvent 문을 사용하려고한다 대신

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

그래서 내가 초기화 위를 사용해야합니다 말을하는지 여기

Workaround for VB.NET partial method using CodeDom?

+0

을 설명하는 또 다른 가능성은 CodeSnippetTypeMember()를 사용하는 것입니다 핸들러, 생성자'New()'문과 같이? –

+0

+1, 예, 생성자를 생성하고 CodeAttachEventStatement를 사용하십시오. –

+0

네, 아직하지는 않았지만 리플렉터의'Handles ... '코드를 검사하면 New() 생성자에서 AddHandler 메소드를 찾을 수있을 것입니다. –

관련 문제