Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

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

Pesquisa um construtor cujos parâmetros correspondam aos tipos e os modificadores especificados do argumento, usando as restrições de associação especificadas e a convenção chamando 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
Tipo: System.Reflection.BindingFlags
Um bitmask composto de um ou mais BindingFlags que especificam como a pesquisa é realizada.
- ou -
Zero, para retornar null.
binder
Tipo: 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
Tipo: System.Reflection.CallingConventions
O objeto que especifica o conjunto de regras para usar em relação à ordem e o layout dos argumentos, como o valor de retorno for passado, a qual os registros são usados para argumentos, e a pilha é limpo.
types
Tipo: System.Type[]
Uma matriz de objetos Type representando o número, ordem, e o tipo de parâmetros para os quais o construtor é.
- ou -
Uma matriz vazia do tipo Type (isto é, o tipo [] tipos = o novo tipo [0]) para obter um construtor sem-parâmetros.
modifiers
Tipo: 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 de retorno

Tipo: System.Reflection.ConstructorInfo
Um objeto que representa o construtor que atende aos requisitos especificados, se localizado; caso contrário, null.

Implementações

_Type.GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

ExceçãoCondição
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 maiores informações.

Para obter o inicializador da classe .cctor () que usa esse método, você deve especificar BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic no 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

Static

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.

ObservaçãoObservaçã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 Type atual representa um parâmetro de tipo na definição de um tipo genérico ou de um método genérico, esse método sempre retornará null.

O exemplo a seguir obtém o tipo de MyClass1, obtém o objeto de ConstructorInfo que corresponde aos sinalizadores associados especificados, 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

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft