Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Método Type.GetConstructor (BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

 

Pesquisa por um construtor cujos parâmetros correspondem aos tipos de argumento e modificadores especificados, usando as restrições de associação especificadas e a convenção de chamada especificada.

Namespace:   System
Assembly:  mscorlib (em mscorlib.dll)

[ComVisibleAttribute(true)]
public ConstructorInfo GetConstructor(
	BindingFlags bindingAttr,
	Binder binder,
	CallingConventions callConvention,
	Type[] types,
	ParameterModifier[] modifiers
)

Parâmetros

bindingAttr
Type: System.Reflection.BindingFlags

Um bitmask composto de um ou mais BindingFlags que especificam como a pesquisa é realizada.

-ou-

Zero, para retornar null.

binder
Type: System.Reflection.Binder

Um objeto que define um conjunto de propriedades e habilita a associação, que pode envolver seleção de um método sobrecarregado, coerção de tipos de argumento e invocação de um membro por meio da reflexão.

-ou-

Uma referência nula (Nothing no Visual Basic), para usar o DefaultBinder.

callConvention
Type: System.Reflection.CallingConventions

O objeto que especifica o conjunto de regras a ser usado em relação à ordem e ao layout dos argumentos, a como o valor retornado é passado, quais registros são usados para argumentos e como a pilha é limpada.

types
Type: System.Type[]

Uma matriz de objetos Type que representam o número, a ordem e o tipo de parâmetros para o construtor obter.

-ou-

Uma matriz vazia do tipo Type (ou seja, Type[] types = new Type[0]) para obter um construtor sem parâmetros.

modifiers
Type: System.Reflection.ParameterModifier[]

Uma matriz de objetos ParameterModifier que representam os atributos associados ao elemento correspondente na matriz types. O associador padrão não processa este parâmetro.

Valor Retornado

Type: System.Reflection.ConstructorInfo

Um objeto que representa o construtor que corresponde aos requisitos especificados, se encontrados; caso contrário, null.

Exception Condition
ArgumentNullException

types é null.

-ou-

Um dos elementos em types é null.

ArgumentException

types é multidimensional.

-ou-

modifiers é multidimensional.

-ou-

types e modifiers não têm o mesmo tamanho.

Embora o associador padrão não processe ParameterModifier (o parâmetro modifiers ), é possível usar a classe abstrata System.Reflection.Binder para gravar um associador personalizado que processa modifiers. ParameterModifier só é usado durante a chamada por meio da interoperabilidade COM e apenas parâmetros passados por referência são identificados.

Se uma correspondência exata não existir, o binder tentará forçar os tipos de parâmetro especificados na matriz types para selecionar uma correspondência. Se o binder não for capaz de selecionar uma correspondência, null será retornado.

Os seguintes sinalizadores de filtro BindingFlags podem ser usados para definir quais construtores devem ser incluídos na pesquisa:

  • Você deve especificar BindingFlags.Instance ou BindingFlags.Static para obter um retorno.

  • Especifique BindingFlags.Public para incluir construtores públicos na pesquisa.

  • Especifique BindingFlags.NonPublic para incluir construtores não públicos (ou seja, construtores particulares, internos e protegidos) na pesquisa.

Consulte System.Reflection.BindingFlags para obter mais informações.

Para obter o inicializador de classe (. cctor) usando esse método, você deve especificar BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Também é possível obter o inicializador da classe usando-se a propriedade TypeInitializer.

A tabela a seguir mostra quais membros de uma classe base são retornados pelos métodos Get durante a reflexão em um tipo.

Tipo do membro

Estático

Não estático

Construtor

Não

Não

Campo

Não

Sim. Um campo permanece sempre oculto por nome e assinatura.

Evento

Não aplicável

A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade. Reflexão trata propriedades como ocultas por nome e assinatura. Consulte a observação 2 abaixo.

Método

Não

Sim. Um método (virtual e não virtual) pode permanecer oculto por nome ou por nome e assinatura.

Tipo aninhado

Não

Não

Propriedade

Não aplicável

A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade. Reflexão trata propriedades como ocultas por nome e assinatura. Consulte a observação 2 abaixo.

  1. Oculto por nome e assinatura considera todas as partes da assinatura, inclusive modificadores personalizados, tipos de retorno, tipos de parâmetro, sentinelas e convenções de chamada não gerenciadas. Esta é uma comparação binária.

  2. Para reflexão, propriedades e eventos permanecem ocultos por nome e assinatura. Se você tiver uma propriedade com um acessador get e set na classe base, mas a classe derivada tiver apenas um acessador get, a propriedade de classe derivada ocultará a propriedade da classe base e você não poderá acessar o setter na classe base.

  3. Atributos personalizados não fazem parte do sistema de tipo comum.

System_CAPS_noteObservação

Não é possível omitir parâmetros durante a pesquisa de construtores e métodos. Só é possível omitir parâmetros durante a invocação.

Caso o Type atual represente um tipo genérico construído, este método retorna o ConstructorInfo com os parâmetros de tipo substituídos pelos argumentos de tipo apropriados. Se o atual Type representa um parâmetro de tipo na definição de um tipo genérico ou método genérico, esse método sempre retornará null.

O exemplo a seguir obtém o tipo de MyClass1, obtém o ConstructorInfo objeto que coincide com os sinalizadores de associação especificado e exibe a assinatura de construtor.

using System;
using System.Reflection;
using System.Security;

public class MyClass1
{
    public MyClass1(int i){}
    public static void Main()
    {
        try
        {
            Type  myType = typeof(MyClass1);
            Type[] types = new Type[1];
            types[0] = typeof(int);
            // Get the public instance constructor that takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null,
                CallingConventions.HasThis, types, null);
            if(constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass1 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 that is a public instance " +
                    "method and takes an integer as a parameter is not available.");
            }
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(ArgumentException e)
        {
            Console.WriteLine("ArgumentException: " + e.Message);
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}

.NET Framework
Disponível desde 1.1
Retornar ao início
Mostrar: