次の方法で共有


TypeBuilder.AddInterfaceImplementation メソッド

この型で実装するインターフェイスを追加します。

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 名前空間