この型で実装するインターフェイスを追加します。
Public Sub AddInterfaceImplementation( _
ByVal interfaceType As Type _)
[C#]
public void AddInterfaceImplementation(TypeinterfaceType);
[C++]
public: void AddInterfaceImplementation(Type* interfaceType);
[JScript]
public function AddInterfaceImplementation(
interfaceType : Type);
パラメータ
- interfaceType
この型で実装するインターフェイス。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | interfaceType が null 参照 (Visual Basic では Nothing) です。 |
InvalidOperationException | この型は、 CreateType を使用して既に作成されています。 |
使用例
[Visual Basic, C#, C++] 次のコード例は、 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)
[C#]
// 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);
[C++]
// Mark the class as implementing 'IHello' interface.
helloWorldTypeBuilder->AddInterfaceImplementation(__typeof(IHello));
MethodBuilder* myMethodBuilder =
helloWorldTypeBuilder->DefineMethod(S"SayHello",static_cast<MethodAttributes>(MethodAttributes::Public|MethodAttributes::Virtual),
0,
0);
// Generate IL for 'SayHello' method.
ILGenerator* myMethodIL = myMethodBuilder->GetILGenerator();
myMethodIL->EmitWriteLine(myGreetingField);
myMethodIL->Emit(OpCodes::Ret);
MethodInfo* sayHelloMethod = __typeof(IHello)->GetMethod(S"SayHello");
helloWorldTypeBuilder->DefineMethodOverride(myMethodBuilder,sayHelloMethod);
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
TypeBuilder クラス | TypeBuilder メンバ | System.Reflection.Emit 名前空間