次の方法で共有


ConstructorBuilder.DefineParameter メソッド

このコンストラクタのパラメータを定義します。

Public Function DefineParameter( _
   ByVal iSequence As Integer, _   ByVal attributes As ParameterAttributes, _   ByVal strParamName As String _) As ParameterBuilder
[C#]
public ParameterBuilder DefineParameter(intiSequence,ParameterAttributesattributes,stringstrParamName);
[C++]
public: ParameterBuilder* DefineParameter(intiSequence,ParameterAttributesattributes,String* strParamName);
[JScript]
public function DefineParameter(
   iSequence : int,attributes : ParameterAttributes,strParamName : String) : ParameterBuilder;

パラメータ

  • iSequence
    パラメータ リスト内のパラメータの位置。パラメータのインデックスは 1 から始まります。最初のパラメータが 1 です。
  • attributes
    パラメータの属性。
  • strParamName
    パラメータの名前。名前は null 文字列でもかまいません。

戻り値

このコンストラクタの新しいパラメータを表す ParameterBuilder オブジェクトを返します。

例外

例外の種類 条件
ArgumentOutOfRangeException position がゼロ以下か、コンストラクタのパラメータ数を超える値です。
InvalidOperationException 外側の型が CreateType を使用して作成されています。

解説

DefineParameter の使用方法については、次のコード例を参照してください。

 
Dim myMethodBuilder As MethodBuilder = Nothing

Dim myCurrentDomain As AppDomain = AppDomain.CurrentDomain
' Create assembly in current CurrentDomain
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "TempAssembly"
' Create a dynamic assembly
myAssemblyBuilder = _
      myCurrentDomain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.RunAndSave)
' Create a dynamic module in the assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule")
Dim myFieldInfo As FieldInfo = _
    myModuleBuilder.DefineUninitializedData("myField", 2, FieldAttributes.Public)
' Create a type in the module
Dim myTypeBuilder As TypeBuilder = _
    myModuleBuilder.DefineType("TempClass", TypeAttributes.Public)
Dim myGreetingField As FieldBuilder = _
   myTypeBuilder.DefineField("Greeting", GetType(String), FieldAttributes.Public)
Dim myConstructorArgs As Type() = {GetType(String)}
' Define a constructor of the dynamic class.
Dim myConstructor As ConstructorBuilder = _
    myTypeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, _
                                    myConstructorArgs)
Dim myPset As New PermissionSet(PermissionState.Unrestricted)
' Add declarative security to the constructor.
Console.WriteLine("Adding declarative security to the constructor.....")
Console.WriteLine("The Security action to be taken is ""DENY"" and" + _
                  " Permission set is ""UNRESTRICTED"".")
myConstructor.AddDeclarativeSecurity(SecurityAction.Deny, myPset)

[C#] 
MethodBuilder myMethodBuilder=null;

AppDomain myCurrentDomain = AppDomain.CurrentDomain;
// Create assembly in current CurrentDomain
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";
// Create a dynamic assembly
myAssemblyBuilder = myCurrentDomain.DefineDynamicAssembly
   (myAssemblyName, AssemblyBuilderAccess.RunAndSave);
// Create a dynamic module in the assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule");
FieldInfo myFieldInfo =
   myModuleBuilder.DefineUninitializedData("myField",2,FieldAttributes.Public);
// Create a type in the module
TypeBuilder myTypeBuilder = myModuleBuilder.DefineType("TempClass",TypeAttributes.Public);
FieldBuilder myGreetingField = myTypeBuilder.DefineField("Greeting",
   typeof(String), FieldAttributes.Public);
Type[] myConstructorArgs = { typeof(String) };
// Define a constructor of the dynamic class.
ConstructorBuilder myConstructor = myTypeBuilder.DefineConstructor(
   MethodAttributes.Public, CallingConventions.Standard, myConstructorArgs);
PermissionSet myPset = new PermissionSet(PermissionState.Unrestricted);
// Add declarative security to the constructor.
Console.WriteLine("Adding declarative security to the constructor.....");
Console.WriteLine("The Security action to be taken is \"DENY\" and" +
   " Permission set is \"UNRESTRICTED\".");
myConstructor.AddDeclarativeSecurity(SecurityAction.Deny,myPset);

[C++] 
MethodBuilder* myMethodBuilder=0;

AppDomain* myCurrentDomain = AppDomain::CurrentDomain;
// Create assembly in current CurrentDomain
AssemblyName* myAssemblyName = new AssemblyName();
myAssemblyName->Name = S"TempAssembly";
// Create a dynamic assembly
myAssemblyBuilder = myCurrentDomain->DefineDynamicAssembly
   (myAssemblyName, AssemblyBuilderAccess::RunAndSave);
// Create a dynamic module in the assembly.
myModuleBuilder = myAssemblyBuilder->DefineDynamicModule(S"TempModule");
FieldInfo* myFieldInfo =
   myModuleBuilder->DefineUninitializedData(S"myField",2,FieldAttributes::Public);
// Create a type in the module
TypeBuilder* myTypeBuilder = myModuleBuilder->DefineType(S"TempClass",TypeAttributes::Public);
FieldBuilder* myGreetingField = myTypeBuilder->DefineField(S"Greeting",
   __typeof(String), FieldAttributes::Public);
Type* myConstructorArgs[] = { __typeof(String) };
// Define a constructor of the dynamic class.
ConstructorBuilder* myConstructor = myTypeBuilder->DefineConstructor(
   MethodAttributes::Public, CallingConventions::Standard, myConstructorArgs);
PermissionSet* myPset = new PermissionSet(PermissionState::Unrestricted);
// Add declarative security to the constructor.
Console::WriteLine(S"Adding declarative security to the constructor.....");
Console::WriteLine(S"The Security action to be taken is \"DENY\" and" 
   S" Permission set is \"UNRESTRICTED\".");
myConstructor->AddDeclarativeSecurity(SecurityAction::Deny,myPset);

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

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