TypeBuilder.DefineConstructor Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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).