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, 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);

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.
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);

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

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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, 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);

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

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1