이 문서는 이 API에 대한 참조 설명서를 보충하는 추가 설명을 제공합니다.
이 MethodBuilder 클래스는 이름, 특성, 서명 및 메서드 본문을 포함하여 CIL(공용 중간 언어)의 메서드를 완전히 설명하는 데 사용됩니다. 클래스와 함께 TypeBuilder 런타임에 클래스를 만드는 데 사용됩니다.
리플렉션 내보내기를 사용하여 전역 메서드를 정의하고 메서드를 형식 멤버로 정의할 수 있습니다. API는 메서드를 정의하고 MethodBuilder 개체를 반환합니다.
전역 메서드
ModuleBuilder.DefineGlobalMethod 메서드를 사용하여 전역 메서드를 정의하면 MethodBuilder
개체를 반환합니다.
전역 메서드는 정적이어야 합니다. 동적 모듈에 전역 메서드 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에서 파생되었지만, MethodInfo 클래스에 정의된 추상 메서드 중 일부는 MethodBuilder에서 완전히 구현되지 않았습니다. MethodBuilder 메서드는 NotSupportedException을 던집니다. 예를 들어 메서드가 MethodBuilder.Invoke 완전히 구현되지 않았습니다. Type.GetType 또는 Assembly.GetType 메서드를 사용하여 바깥쪽 형식을 검색함으로써 이러한 메서드를 반영할 수 있습니다.
- 사용자 지정 변형자가 지원됩니다.
.NET