다음을 통해 공유


TypeBuilder.AddInterfaceImplementation 메서드

이 형식이 구현하는 인터페이스를 추가합니다.

네임스페이스: System.Reflection.Emit
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<ComVisibleAttribute(True)> _
Public Sub AddInterfaceImplementation ( _
    interfaceType As Type _
)
‘사용 방법
Dim instance As TypeBuilder
Dim interfaceType As Type

instance.AddInterfaceImplementation(interfaceType)
[ComVisibleAttribute(true)] 
public void AddInterfaceImplementation (
    Type interfaceType
)
[ComVisibleAttribute(true)] 
public:
void AddInterfaceImplementation (
    Type^ interfaceType
)
/** @attribute ComVisibleAttribute(true) */ 
public void AddInterfaceImplementation (
    Type interfaceType
)
ComVisibleAttribute(true) 
public function AddInterfaceImplementation (
    interfaceType : Type
)

매개 변수

  • interfaceType
    이 형식이 구현하는 인터페이스입니다.

예외

예외 형식 조건

ArgumentNullException

interfaceType이 Null 참조(Visual Basic의 경우 Nothing)인 경우

InvalidOperationException

해당 형식이 CreateType을 사용하여 이미 만들어져 있는 경우

예제

다음 코드 예제에서는 AddInterfaceImplementation을 사용하여 동적으로 만들어진 형식에 인터페이스를 구현하는 방법을 보여 줍니다.

' Mark the class as implementing 'IHello' interface.
helloWorldTypeBuilder.AddInterfaceImplementation(GetType(IHello))
Dim myMethodBuilder As MethodBuilder = helloWorldTypeBuilder.DefineMethod("SayHello", _
                     MethodAttributes.Public Or MethodAttributes.Virtual, Nothing, Nothing)
' Generate IL for 'SayHello' method.
Dim myMethodIL As ILGenerator = myMethodBuilder.GetILGenerator()
myMethodIL.EmitWriteLine(myGreetingField)
myMethodIL.Emit(OpCodes.Ret)
Dim sayHelloMethod As MethodInfo = GetType(IHello).GetMethod("SayHello")
helloWorldTypeBuilder.DefineMethodOverride(myMethodBuilder, sayHelloMethod)
 // Mark the class as implementing 'IHello' interface.
 helloWorldTypeBuilder.AddInterfaceImplementation(typeof(IHello));
 MethodBuilder myMethodBuilder =
    helloWorldTypeBuilder.DefineMethod("SayHello",
                         MethodAttributes.Public|MethodAttributes.Virtual,
                         null,
                         null);
 // Generate IL for 'SayHello' method.
 ILGenerator myMethodIL = myMethodBuilder.GetILGenerator();
 myMethodIL.EmitWriteLine(myGreetingField);
 myMethodIL.Emit(OpCodes.Ret);
MethodInfo sayHelloMethod = typeof(IHello).GetMethod("SayHello");
helloWorldTypeBuilder.DefineMethodOverride(myMethodBuilder,sayHelloMethod);
// Mark the class as implementing 'IHello' interface.
helloWorldTypeBuilder->AddInterfaceImplementation( IHello::typeid );
MethodBuilder^ myMethodBuilder =
   helloWorldTypeBuilder->DefineMethod( "SayHello",
      (MethodAttributes)(MethodAttributes::Public | MethodAttributes::Virtual),
      nullptr,
      nullptr );
// Generate IL for 'SayHello' method.
ILGenerator^ myMethodIL = myMethodBuilder->GetILGenerator();
myMethodIL->EmitWriteLine( myGreetingField );
myMethodIL->Emit( OpCodes::Ret );
MethodInfo^ sayHelloMethod = IHello::typeid->GetMethod( "SayHello" );
helloWorldTypeBuilder->DefineMethodOverride( myMethodBuilder, sayHelloMethod );

플랫폼

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

참고 항목

참조

TypeBuilder 클래스
TypeBuilder 멤버
System.Reflection.Emit 네임스페이스