2013-01-21 4 views
0

일부 클라이언트 코드에서 원하는 서명으로 즉석에서 메서드를 만드는 방법을 배우고 싶습니다. System.Delegate.BeginInvoke, EndInvokeInvoke 메소드와 같습니다.런타임에 새 메서드 만들기

나는이 메소드들에 대해 System.Delegate 클래스를 찾고 있는데 찾을 수 없다. (어쨌든 늦은 바인딩 메소드에 대한 호출을 동적으로 처리하기 때문에 재미 있지는 않다. DynamicInvoke 제외), 분명히이 메소드들은에서 만들어진다. 실행 시간.

나는 그런 것을 구현해야한다면 어떻게 할 것인가에 대한 내 머리를 긁적입니다. 소리내어 생각하고 있습니다 :

1) 새 어셈블리를 만드는 데 관심이 없기 때문에 코드 DOM이 작동하지 않습니다. 같은 어셈블리 내의 클래스에 새 메서드를 추가하기 만하면됩니다.

2) 좋은 반사 효과는 정상적으로 작동합니다. 클라이언트 코드에서 지정한 것과 동일한 매개 변수를 갖는 새 MethodInfo을 만들 수 있지만이 새로운 코드를 메서드로 내 클래스에 표시하려면 어떻게해야합니까? MethodInfo?

누구든지이 문제에 관해 밝힐 수 있습니까?

+0

DynamicMethod를 보았습니까? –

+0

@ 존 세켓 : 오, 정말 고마워요! :-) –

+0

대표자에 대한 이해가 잘못되었습니다. – leppie

답변

0

이 질문에 대한 답변은 System.Reflection.Emit.DynamicMethod 클래스를 사용하는 것입니다. 직장에서의 예를 보려면 this link을 방문하십시오.

Jon Skeet에게 올바른 방향으로 나를 안내해 주신 데 큰 감사드립니다. 이 질문에 대한 의견을보십시오.