次の方法で共有


PropertyBuilder.SetGetMethod メソッド

プロパティ値を取得するメソッドを設定します。

Public Sub SetGetMethod( _
   ByVal mdBuilder As MethodBuilder _)
[C#]
public void SetGetMethod(MethodBuildermdBuilder);
[C++]
public: void SetGetMethod(MethodBuilder* mdBuilder);
[JScript]
public function SetGetMethod(
   mdBuilder : MethodBuilder);

パラメータ

  • mdBuilder
    プロパティ値を取得するメソッドを表す MethodBuilder オブジェクト。

例外

例外の種類 条件
ArgumentNullException mdBuilder が null 参照 (Visual Basic では Nothing) です。
InvalidOperationException CreateType が、外側の型に対して呼び出されました。

使用例

[Visual Basic, C#, C++] 次のコード例は、 SetGetMethod を使用して、 PropertyBuilder で作成した get プロパティを動的なメソッドに結び付ける方法を示しています。

 
' Define property Greeting.
Dim greetingPropertyBuilder As PropertyBuilder = helloWorldTypeBuilder.DefineProperty _
                           ("Greeting", PropertyAttributes.None, GetType(String), Nothing)

' Define the 'get_Greeting' method.
Dim getGreetingMethod As MethodBuilder = helloWorldTypeBuilder.DefineMethod("get_Greeting", _
                        MethodAttributes.Public Or MethodAttributes.HideBySig Or _
                        MethodAttributes.SpecialName, GetType(String), Nothing)
' Generate IL code for 'get_Greeting' method.
Dim methodIL As ILGenerator = getGreetingMethod.GetILGenerator()
methodIL.Emit(OpCodes.Ldarg_0)
methodIL.Emit(OpCodes.Ldfld, greetingFieldBuilder)
methodIL.Emit(OpCodes.Ret)
greetingPropertyBuilder.SetGetMethod(getGreetingMethod)

[C#] 
// Define property Greeting.
PropertyBuilder greetingPropertyBuilder = helloWorldTypeBuilder.DefineProperty(
                         "Greeting",PropertyAttributes.None,typeof(string),null);

// Define the 'get_Greeting' method.
MethodBuilder getGreetingMethod = helloWorldTypeBuilder.DefineMethod("get_Greeting",
   MethodAttributes.Public|MethodAttributes.HideBySig|MethodAttributes.SpecialName,
   typeof(String),null);
// Generate IL code for 'get_Greeting' method.
ILGenerator methodIL = getGreetingMethod.GetILGenerator();
methodIL.Emit(OpCodes.Ldarg_0);
methodIL.Emit(OpCodes.Ldfld, greetingFieldBuilder);
methodIL.Emit(OpCodes.Ret);
greetingPropertyBuilder.SetGetMethod(getGreetingMethod);

[C++] 
// Define property Greeting.
PropertyBuilder* greetingPropertyBuilder = helloWorldTypeBuilder->DefineProperty(
   S"Greeting",PropertyAttributes::None,__typeof(String),0);

// Define the 'get_Greeting' method.
MethodBuilder* getGreetingMethod = helloWorldTypeBuilder->DefineMethod(
   S"get_Greeting",
   static_cast<MethodAttributes>(MethodAttributes::Public
                                |MethodAttributes::HideBySig
                                |MethodAttributes::SpecialName),
   __typeof(String),
   0);
// Generate IL code for 'get_Greeting' method.
ILGenerator* methodIL = getGreetingMethod->GetILGenerator();
methodIL->Emit(OpCodes::Ldarg_0);
methodIL->Emit(OpCodes::Ldfld, greetingFieldBuilder);
methodIL->Emit(OpCodes::Ret);
greetingPropertyBuilder->SetGetMethod(getGreetingMethod);

[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 ファミリ

参照

PropertyBuilder クラス | PropertyBuilder メンバ | System.Reflection.Emit 名前空間