Compartilhar via


TypeBuilder.DefineConstructor Método

Definição

Adiciona um novo construtor ao tipo dinâmico.

Sobrecargas

DefineConstructor(MethodAttributes, CallingConventions, Type[])

Adiciona um novo construtor ao tipo, com a assinatura e os atributos determinados.

DefineConstructor(MethodAttributes, CallingConventions, Type[], Type[][], Type[][])

Adiciona um novo construtor ao tipo, com os atributos, a assinatura e os modificadores personalizados determinados.

DefineConstructor(MethodAttributes, CallingConventions, Type[])

Origem:
TypeBuilder.cs
Origem:
TypeBuilder.cs
Origem:
TypeBuilder.cs

Adiciona um novo construtor ao tipo, com a assinatura e os atributos determinados.

public:
 System::Reflection::Emit::ConstructorBuilder ^ DefineConstructor(System::Reflection::MethodAttributes attributes, System::Reflection::CallingConventions callingConvention, cli::array <Type ^> ^ parameterTypes);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[]? parameterTypes);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes);
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] -> System.Reflection.Emit.ConstructorBuilder
[<System.Runtime.InteropServices.ComVisible(true)>]
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] -> System.Reflection.Emit.ConstructorBuilder
Public Function DefineConstructor (attributes As MethodAttributes, callingConvention As CallingConventions, parameterTypes As Type()) As ConstructorBuilder

Parâmetros

attributes
MethodAttributes

Os atributos do construtor.

callingConvention
CallingConventions

A convenção de chamada do construtor.

parameterTypes
Type[]

Os tipos de parâmetro do construtor.

Retornos

O construtor definido.

Atributos

Exceções

O tipo foi criado anteriormente usando CreateType().

Exemplos

O exemplo de código a seguir demonstra o uso de DefineConstructor para definir a assinatura e os atributos específicos de um construtor em um tipo dinâmico e retornar um correspondente ConstructorBuilder para a população MSIL.

// Define the constructor.
array<Type^>^ constructorArgs = {String::typeid};
ConstructorBuilder^ myConstructorBuilder =
   helloWorldTypeBuilder->DefineConstructor( MethodAttributes::Public,
      CallingConventions::Standard, constructorArgs );
// Generate IL for the method. The constructor stores its argument in the private field.
ILGenerator^ myConstructorIL = myConstructorBuilder->GetILGenerator();
myConstructorIL->Emit( OpCodes::Ldarg_0 );
myConstructorIL->Emit( OpCodes::Ldarg_1 );
myConstructorIL->Emit( OpCodes::Stfld, myGreetingField );
myConstructorIL->Emit( OpCodes::Ret );
// Define the constructor.
Type[] constructorArgs = { typeof(String) };
ConstructorBuilder myConstructorBuilder =
   helloWorldTypeBuilder.DefineConstructor(MethodAttributes.Public,
                      CallingConventions.Standard, constructorArgs);
// Generate IL for the method. The constructor stores its argument in the private field.
ILGenerator myConstructorIL = myConstructorBuilder.GetILGenerator();
myConstructorIL.Emit(OpCodes.Ldarg_0);
myConstructorIL.Emit(OpCodes.Ldarg_1);
myConstructorIL.Emit(OpCodes.Stfld, myGreetingField);
myConstructorIL.Emit(OpCodes.Ret);
' Define the constructor.
Dim constructorArgs As Type() = {GetType(String)}
Dim myConstructorBuilder As ConstructorBuilder = helloWorldTypeBuilder.DefineConstructor _
                     (MethodAttributes.Public, CallingConventions.Standard, constructorArgs)
' Generate IL for the method. The constructor stores its argument in the private field.
Dim myConstructorIL As ILGenerator = myConstructorBuilder.GetILGenerator()
myConstructorIL.Emit(OpCodes.Ldarg_0)
myConstructorIL.Emit(OpCodes.Ldarg_1)
myConstructorIL.Emit(OpCodes.Stfld, myGreetingField)
myConstructorIL.Emit(OpCodes.Ret)

Comentários

Se você não definir um construtor para seu tipo dinâmico, um construtor sem parâmetros será fornecido automaticamente e ele chamará o construtor sem parâmetros da classe base.

Se você definir um construtor para seu tipo dinâmico, um construtor sem parâmetros não será fornecido. Você tem as seguintes opções para fornecer um construtor sem parâmetros, além do construtor que você definiu:

  • Se você quiser um construtor sem parâmetros que simplesmente chame o construtor sem parâmetros da classe base, poderá usar o método para criar um (e, opcionalmente, restringir o DefineDefaultConstructor acesso a ele). Não forneça uma implementação para esse construtor sem parâmetros. Se você fizer isso, uma exceção será gerada quando você tentar usar o construtor . Nenhuma exceção é gerada quando o CreateType método é chamado.

  • Se você quiser um construtor sem parâmetros que faça algo mais do que simplesmente chamar o construtor sem parâmetros da classe base ou que chame outro construtor da classe base ou que faça algo totalmente diferente, você deverá usar o TypeBuilder.DefineConstructor método para criar um e fornecer sua própria implementação.

Aplica-se a

DefineConstructor(MethodAttributes, CallingConventions, Type[], Type[][], Type[][])

Origem:
TypeBuilder.cs
Origem:
TypeBuilder.cs
Origem:
TypeBuilder.cs

Adiciona um novo construtor ao tipo, com os atributos, a assinatura e os modificadores personalizados determinados.

public:
 System::Reflection::Emit::ConstructorBuilder ^ DefineConstructor(System::Reflection::MethodAttributes attributes, System::Reflection::CallingConventions callingConvention, cli::array <Type ^> ^ parameterTypes, cli::array <cli::array <Type ^> ^> ^ requiredCustomModifiers, cli::array <cli::array <Type ^> ^> ^ optionalCustomModifiers);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers);
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] * Type[][] * Type[][] -> System.Reflection.Emit.ConstructorBuilder
[<System.Runtime.InteropServices.ComVisible(true)>]
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] * Type[][] * Type[][] -> System.Reflection.Emit.ConstructorBuilder
Public Function DefineConstructor (attributes As MethodAttributes, callingConvention As CallingConventions, parameterTypes As Type(), requiredCustomModifiers As Type()(), optionalCustomModifiers As Type()()) As ConstructorBuilder

Parâmetros

attributes
MethodAttributes

Os atributos do construtor.

callingConvention
CallingConventions

A convenção de chamada do construtor.

parameterTypes
Type[]

Os tipos de parâmetro do construtor.

requiredCustomModifiers
Type[][]

Uma matriz de matrizes de tipos. Cada matriz de tipos representa os modificadores personalizados obrigatórios para o parâmetro correspondente, por exemplo IsConst. Se um determinado parâmetro tiver não modificadores personalizados obrigatórios, especifique null em vez de uma matriz de tipos. Se nenhum dos parâmetros tiver modificadores personalizados obrigatórios, especifique null em vez de uma matriz de matrizes.

optionalCustomModifiers
Type[][]

Uma matriz de matrizes de tipos. Cada matriz de tipos representa os modificadores personalizados opcionais para o parâmetro correspondente, por exemplo IsConst. Se um determinado parâmetro tiver não modificadores personalizados opcionais, especifique null em vez de uma matriz de tipos. Se nenhum dos parâmetros tiver modificadores personalizados opcionais, especifique null em vez de uma matriz de matrizes.

Retornos

O construtor definido.

Atributos

Exceções

O tamanho de requiredCustomModifiers ou optionalCustomModifiers não é igual ao tamanho de parameterTypes.

O tipo foi criado anteriormente usando CreateType().

- ou -

Para o tipo dinâmico atual, a propriedade IsGenericType é true, mas a propriedade IsGenericTypeDefinition é false.

Comentários

Essa sobrecarga é fornecida para designers de compiladores gerenciados.

Observação

Para obter mais informações sobre modificadores personalizados, consulte Padrões ECMA C# e Common Language Infrastructure e Standard ECMA-335 – Common Language Infrastructure (CLI).

Aplica-se a