Ler em inglês

Compartilhar via


Type.GetConstructor Método

Definição

Obtém um construtor específico do Type atual.

Sobrecargas

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.

GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])

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

GetConstructor(BindingFlags, Type[])

Pesquisa um construtor cujos parâmetros correspondem aos tipos de argumento especificados, usando as restrições de associação especificadas.

GetConstructor(Type[])

Pesquisa um construtor de instância pública cujos parâmetros correspondem aos tipos na matriz especificada.

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

Origem:
Type.cs
Origem:
Type.cs
Origem:
Type.cs

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.

C#
public System.Reflection.ConstructorInfo? GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[]? modifiers);
C#
public System.Reflection.ConstructorInfo GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers);

Parâmetros

bindingAttr
BindingFlags

Uma combinação bit a bit dos valores de enumeração que especificam como a pesquisa é realizada.

- ou -

Default para retornar null.

binder
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
CallingConventions

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

types
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
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.

Retornos

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

Implementações

Atributos

Exceções

types é null.

- ou -

Um dos elementos em types é null.

types é multidimensional.

- ou -

modifiers é multidimensional.

- ou -

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

Exemplos

O exemplo a seguir obtém o tipo de MyClass, obtém o ConstructorInfo objeto e exibe a assinatura do construtor.

C#
using System;
using System.Reflection;
using System.Security;

public class MyClass3
{
    public MyClass3(int i) { }
    public static void Main()
    {
        try
        {
            Type myType = typeof(MyClass3);
            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 MyClass3 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass3 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);
        }
    }
}

Comentários

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 é usado somente ao chamar por meio da interoperabilidade COM e somente os parâmetros passados por referência são tratados.

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 (construtor estático) usando 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 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.

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

Confira também

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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

GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])

Origem:
Type.cs
Origem:
Type.cs
Origem:
Type.cs

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

C#
public System.Reflection.ConstructorInfo? GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, Type[] types, System.Reflection.ParameterModifier[]? modifiers);
C#
public System.Reflection.ConstructorInfo GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type[] types, System.Reflection.ParameterModifier[] modifiers);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type[] types, System.Reflection.ParameterModifier[] modifiers);

Parâmetros

bindingAttr
BindingFlags

Uma combinação bit a bit dos valores de enumeração que especificam como a pesquisa é realizada.

- ou -

Default para retornar null.

binder
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.

types
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.

- ou -

EmptyTypes.

modifiers
ParameterModifier[]

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

Retornos

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

Implementações

Atributos

Exceções

types é null.

- ou -

Um dos elementos em types é null.

types é multidimensional.

- ou -

modifiers é multidimensional.

- ou -

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

Exemplos

O exemplo a seguir obtém o tipo de MyClass, obtém o ConstructorInfo objeto e exibe a assinatura do construtor.

C#
using System;
using System.Reflection;
using System.Security;

public class MyClass2
{
    public MyClass2(int i) { }
    public static void Main()
    {
        try
        {
            Type myType = typeof(MyClass2);
            Type[] types = new Type[1];
            types[0] = typeof(int);
            // Get the constructor that is public and takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null, types, null);
            if (constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass2 that is public " +
                    "and takes an integer as a parameter is:");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of the MyClass2 that is public " +
                    "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);
        }
    }
}

Comentários

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 (construtor estático) usando essa sobrecarga de 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.

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

Confira também

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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

GetConstructor(BindingFlags, Type[])

Origem:
Type.cs
Origem:
Type.cs
Origem:
Type.cs

Pesquisa um construtor cujos parâmetros correspondem aos tipos de argumento especificados, usando as restrições de associação especificadas.

C#
public System.Reflection.ConstructorInfo? GetConstructor(System.Reflection.BindingFlags bindingAttr, Type[] types);

Parâmetros

bindingAttr
BindingFlags

Uma combinação bit a bit dos valores de enumeração que especificam como a pesquisa é realizada. -ou- Padrão para retornar null.

types
Type[]

Uma matriz de objetos Type que representam o número, a ordem e o tipo dos parâmetros para o construtor obter. -ou- Uma matriz vazia do tipo Type (ou seja, Tipos[] = Array.Empty{Type}()) para obter um construtor que não usa parâmetros. -ou- EmptyTypes.

Retornos

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

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET 6, 7, 8, 9, 10

GetConstructor(Type[])

Origem:
Type.cs
Origem:
Type.cs
Origem:
Type.cs

Pesquisa um construtor de instância pública cujos parâmetros correspondem aos tipos na matriz especificada.

C#
public System.Reflection.ConstructorInfo? GetConstructor(Type[] types);
C#
public System.Reflection.ConstructorInfo GetConstructor(Type[] types);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo GetConstructor(Type[] types);

Parâmetros

types
Type[]

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

- ou -

Uma matriz vazia de objetos Type, para obter um construtor que não aceita parâmetros. Tal matriz vazia é fornecida pelo campo static de EmptyTypes.

Retornos

Um objeto que representa o construtor de instância pública cujos parâmetros correspondem aos tipos na matriz de tipos de parâmetro, se encontrado; caso contrário, null.

Implementações

Atributos

Exceções

types é null.

- ou -

Um dos elementos em types é null.

types é multidimensional.

Exemplos

O exemplo a seguir obtém o tipo de MyClass, obtém o ConstructorInfo objeto e exibe a assinatura do construtor.

C#
using System;
using System.Reflection;

public class MyClass1
{
    public 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 constructor that takes an integer as a parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(types);
            if (constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass1 that takes an " +
                    "integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 that takes an integer " +
                    "as a parameter is not available.");
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception caught.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
    }
}

Comentários

Essa sobrecarga de método procura construtores de instância pública e não pode ser usada para obter um inicializador de classe (construtor estático). Para obter um inicializador de classe, use uma sobrecarga que usa BindingFlagse especifique | BindingFlags.NonPublicBindingFlags.Static(BindingFlags.StaticOrBindingFlags.NonPublic no Visual Basic). Também é possível obter o inicializador da classe usando-se a propriedade TypeInitializer.

Se o construtor solicitado não for público, esse método retornará null.

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

Confira também

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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