TypeBuilder.DefineConstructor Método

Definição

Adiciona um novo construtor ao tipo dinâmico.

Sobrecargas

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

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

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

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

DefineConstructor(MethodAttributes, CallingConventions, Type[])

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

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);
[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âmetros do construtor.

Devoluções

O construtor definido.

Atributos

Exceções

O tipo foi anteriormente criado usando CreateType().

Exemplos

O exemplo de código seguinte demonstra a utilização de DefineConstructor para definir a assinatura e atributos particulares de um construtor num tipo dinâmico e devolver um correspondente ConstructorBuilder para a população MSIL.

// 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)

Observações

Se não definir um construtor para o seu tipo dinâmico, um construtor sem parâmetros é fornecido automaticamente, que chama o construtor sem parâmetros da classe base.

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

  • Se quiseres um construtor sem parâmetros que simplesmente chame o construtor sem parâmetros da classe base, podes usar o DefineDefaultConstructor método para criar um (e opcionalmente restringir o acesso a ele). Não forneça uma implementação para este construtor sem parâmetros. Se o fizer, é lançada uma exceção quando tenta usar o construtor. Não é feita exceção quando o CreateType método é chamado.

  • Se quiseres 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 completamente diferente, tens de usar o TypeBuilder.DefineConstructor método para criar um e fornecer a tua própria implementação.

Aplica-se a

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

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

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);
[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);
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)>]
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] * Type[][] * Type[][] -> System.Reflection.Emit.ConstructorBuilder
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âmetros do construtor.

requiredCustomModifiers
Type[][]

Uma variedade de arrays de tipos. Cada array de tipos representa os modificadores personalizados necessários para o parâmetro correspondente, como IsConst. Se um determinado parâmetro não tiver modificadores personalizados obrigatórios, especifique null em vez disso um array de tipos. Se nenhum dos parâmetros exigir modificadores personalizados, especifique null em vez de um array de arrays.

optionalCustomModifiers
Type[][]

Uma variedade de arrays de tipos. Cada array de tipos representa os modificadores personalizados opcionais para o parâmetro correspondente, como IsConst. Se um determinado parâmetro não tiver modificadores personalizados opcionais, especifique null em vez disso um array de tipos. Se nenhum dos parâmetros tiver modificadores personalizados opcionais, especifique null em vez de um array de arrays.

Devoluções

O construtor definido.

Atributos

Exceções

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

O tipo foi anteriormente criado usando CreateType().

-ou-

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

Observações

Esta sobrecarga é fornecida para os projetistas de compiladores geridos.

Note

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

Aplica-se a