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
Este tópico ainda não foi avaliado como - Avalie este tópico

Método Type.GetConstructors

Retorna todos os construtores públicos definidos para Typeatual.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)
[ComVisibleAttribute(true)]
public ConstructorInfo[] GetConstructors()

Valor de retorno

Tipo: System.Reflection.ConstructorInfo[]
Uma matriz de objetos de ConstructorInfo que representam todos os construtores públicos de instância definida para Typeatual, mas não incluindo o inicializador de tipo (construtor estático). Se nenhum construtor público da instância é definido para Typeatual, ou se Type atual representa um parâmetro de tipo na definição de um tipo genérico ou um método genérico, uma matriz vazia do tipo ConstructorInfo é retornada.

Implementações

_Type.GetConstructors()

O método de GetConstructors não retorna construtores em uma ordem específica, como a ordem de declaração. Seu código não deve depender de ordem em que os construtores são retornados, porque essa ordem varia.

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.

Essa sobrecarga do método chama a sobrecarga do método de GetConstructors(BindingFlags) , com BindingFlags.Public | BindingFlags.Instance (BindingFlags.PublicOrBindingFlags.Instance no Visual Basic). Não encontrará inicializadores de classe (.cctor). Para localizar inicializadores de classe, use uma sobrecarga que recebe BindingFlags, e 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.

Se Type atual representa um tipo genérico construído, retornos desse método objetos de ConstructorInfo com os parâmetros de tipo substituídos pelos argumentos apropriados de tipo. Por exemplo, se a classe C<T> tem um construtor C(T t1) (Sub New(ByVal t1 As T) no Visual Basic), chamando GetConstructors em C<int> retorna ConstructorInfo que representa C(int t1) em C# (Sub New(ByVal t1 As Integer) no Visual Basic).

Se Type atual representa um parâmetro de tipo genérico, o método de GetConstructors retorna uma matriz vazia.

Este exemplo mostra a saída de sobrecarga de GetConstructors de uma classe que tem dois construtores de instância e um construtor estático.


using System;
using System.Reflection;

public class t {
    public t() {}
    static t() {}
    public t(int i) {}

    public static void Main() {
        ConstructorInfo[] p = typeof(t).GetConstructors();
        Console.WriteLine(p.Length);

        for (int i=0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}


A saída desse código é:

2

False

False

Porque a sobrecarga de GetConstructors() usa apenas BindingFlags.Public e BindingFlags.Instance, o construtor estático ou é a contagem pela expressão de for ou avaliado por IsStatic.

Para localizar construtores estáticos, usar a sobrecarga de GetConstructors(BindingFlags) , e passe a combinação ( ORlógico) de BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublic, BindingFlags.Instance, conforme mostrado no exemplo de código a seguir:


using System;
using System.Reflection;

public class t {
    public t() {}
    static t() {}
    public t(int i) {}

    public static void Main() {
        ConstructorInfo[] p = typeof(t).GetConstructors(
           BindingFlags.Public | BindingFlags.Static |
           BindingFlags.NonPublic | BindingFlags.Instance);
        Console.WriteLine(p.Length);

        for (int i=0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}


Agora a saída são:

3

False

True

False

.NET Framework

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

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

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.
Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft. Todos os direitos reservados.