System.Reflection.Emit.MethodBuilder 클래스
이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.
이 MethodBuilder 클래스는 이름, 특성, 서명 및 메서드 본문을 포함하여 CIL(공용 중간 언어)의 메서드를 완전히 설명하는 데 사용됩니다. 클래스와 함께 TypeBuilder 런타임에 클래스를 만드는 데 사용됩니다.
리플렉션 내보내기를 사용하여 전역 메서드를 정의하고 메서드를 형식 멤버로 정의할 수 있습니다. 메서드를 정의하는 API는 개체를 반환 MethodBuilder 합니다.
전역 메서드
전역 메서드는 개체를 반환 MethodBuilder
하는 메서드를 ModuleBuilder.DefineGlobalMethod 사용하여 정의됩니다.
전역 메서드는 정적이어야 합니다. 동적 모듈에 전역 메서드 ModuleBuilder.CreateGlobalFunctions 가 포함된 경우 공용 언어 런타임이 모든 전역 함수가 정의될 때까지 동적 모듈 수정을 연기하기 때문에 동적 모듈 또는 포함된 동적 어셈블리를 유지하기 전에 메서드를 호출해야 합니다.
전역 네이티브 메서드는 메서드를 사용하여 정의됩니다 ModuleBuilder.DefinePInvokeMethod . PInvoke(플랫폼 호출) 메서드는 추상 또는 가상으로 선언해서는 안 됩니다. 런타임은 플랫폼 호출 메서드의 특성을 설정합니다 MethodAttributes.PinvokeImpl .
형식의 멤버인 메서드
메서드는 개체를 반환하는 메서드를 TypeBuilder.DefineMethod 사용하여 형식 멤버로 MethodBuilder 정의됩니다.
이 DefineParameter 메서드는 매개 변수의 이름 및 매개 변수 특성 또는 반환 값을 설정하는 데 사용됩니다. 이 메서드에서 반환된 개체는 ParameterBuilder 매개 변수 또는 반환 값을 나타냅니다. 개체를 ParameterBuilder 사용하여 마샬링을 설정하고, 상수 값을 설정하고, 사용자 지정 특성을 적용할 수 있습니다.
특성
열거형의 멤버는 MethodAttributes 동적 메서드의 정확한 문자를 정의합니다.
- 정적 메서드는 특성을 사용하여 MethodAttributes.Static 지정됩니다.
- 최종 메서드(재정의할 수 없는 메서드)는 특성을 사용하여 MethodAttributes.Final 지정됩니다.
- 가상 메서드는 특성을 사용하여 MethodAttributes.Virtual 지정됩니다.
- 추상 메서드는 특성을 사용하여 MethodAttributes.Abstract 지정됩니다.
- 여러 특성에 따라 메서드 표시 여부가 결정됩니다. 열거형에 대한 MethodAttributes 설명을 참조하세요.
- 오버로드된 연산자를 구현하는 메서드는 MethodAttributes.SpecialName 특성을 설정해야 합니다.
- 종료자는 특성을 설정 MethodAttributes.SpecialName 해야 합니다.
알려진 문제
- MethodBuilder 파생되지만 클래스에 MethodInfo정의된 추상 메서드 중 일부는 .에서 MethodInfoMethodBuilder완전히 구현되지 않습니다. 이러한 MethodBuilder 메서드는 을 throw합니다 NotSupportedException. 예를 들어 메서드가 MethodBuilder.Invoke 완전히 구현되지 않았습니다. 또는 Assembly.GetType 메서드를 사용하여 바깥쪽 형식을 검색하여 이러한 메서드를 반영할 Type.GetType 수 있습니다.
- 사용자 지정 한정자가 지원됩니다.
.NET