최신 버전의 .NET Framework 버전 4.5에서 MethodBuilder 클래스에는 SetMethodBody
이라는 메서드가 있습니다.이 메서드는 ILGenerator를 사용하는 대안으로 생각합니다. 성가신 및 이상한 방법으로 제한). 이 설명서는 here으로 볼 수 있지만 .NET 4.5가 아직 출시되지 않았기 때문에 문서화되지 않았습니다. 나는 두 가지를 제외한 모든 것을 제공 할 수 있지만 나머지는 도움이 필요할 것입니다..NET 4.5 MethodBuilder.SetMethodBody
처음 이해할 수없는 것은 byte[] localSignature
, 세 번째 인수입니다. MSDN은 "직렬화 된 로컬 변수 구조를 포함하는 바이트 배열입니다. 메서드에 로컬 변수가 없으면 null을 지정하십시오." 문제는 그게 전부입니다. "직렬화 된 지역 변수 서명"형식을 찾을 수 없습니다. ECMA-335 스펙을 살펴 보았습니다 만, 어셈블리 언어가 아닌 CIL에서 지역 변수를 지정하는 방법을 찾았습니다. 아무도 내가 이것을 이해하도록 도와 줄 수 없다면 많은 도움이 될 것입니다.
또한 마지막 인수는 "수정 될 수있는 토큰의 시작을 지정하는 오프셋을 나타내는 값의 집합 인 IEnumerable<int> tokenFixups
입니다. 메서드에 토큰이 없으면 null을 지정하십시오. 수정. " 나는 이것을 사용할 필요가 없다고 생각하지만, 어쨌든 그들이 무엇인지 알고 싶습니다.
감사합니다, 브랜든
SignatureHelper 클래스가 필요합니다. 픽스 업은 C++/CLI와 같이 네이티브 코드를 IL로 변환하는 컴파일러에만 해당됩니다. –
@ 한자 Passant : 답변 주셔서 감사합니다! :) – aboveyou00