TypeBuilder.DefineConstructor Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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).