GetConstructors Método (BindingFlags)
Collapse the table of content
Expand the table of content
Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Type.GetConstructors (Método) (BindingFlags)

 

Cuando se invalida en una clase derivada, busca los constructores definidos para el objeto Type actual, con las enumeraciones BindingFlags especificadas.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
public abstract ConstructorInfo[] GetConstructors(
	BindingFlags bindingAttr
)

Parámetros

bindingAttr

Máscara de bits formada por una o varias enumeraciones BindingFlags que especifican la forma en que se realiza la búsqueda.

o bien

Cero, para devolver null.

Valor devuelto

Type: System.Reflection.ConstructorInfo[]

Matriz de objetos ConstructorInfo que representa todos los constructores definidos para el objeto Type actual que coincidan con las restricciones de enlace especificadas, incluido el inicializador de tipo si está definido.Devuelve una matriz vacía de tipo ConstructorInfo si no se definen constructores para el objeto Type actual, si ninguno de los constructores definidos cumple las restricciones de enlace o si el objeto Type actual representa un parámetro de tipo en la definición de un tipo genérico o de un método genérico.

El GetConstructors método no devuelve constructores en un orden específico, como el orden de declaración.El código no debe depender del orden en que se devuelven los constructores, porque ese orden varía.

bindingAttr puede utilizarse para especificar si se deben devolver sólo los constructores públicos o constructores públicos y no públicos.

Si no existe una coincidencia exacta, el binder intentará convertir los tipos de parámetro especificados en la types matriz para seleccionar una coincidencia.Si el binder no puede seleccionar una coincidencia, a continuación, null se devuelve.

La siguiente BindingFlags indicadores de filtro pueden utilizarse para definir los constructores que deben incluirse en la búsqueda:

  • Debe especificar BindingFlags.Instance o BindingFlags.Static para obtener una devolución.

  • Especificar BindingFlags.Public para incluir constructores públicos en la búsqueda.

  • Especificar BindingFlags.NonPublic para incluir constructores no públicos (es decir, constructores privados, internos y protegidos) en la búsqueda.Constructores de clases base no se devuelven.

Vea System.Reflection.BindingFlags para obtener más información.

Para obtener al inicializador de clase (.cctor) utilizando esta sobrecarga del método, se debe especificar BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic en Visual Basic).También puede obtener el inicializador de clase utilizando la TypeInitializer propiedad.

Si la corriente Type representa un tipo genérico construido, este método devuelve el ConstructorInfo objetos con los parámetros de tipo sustituidos por los argumentos del tipo adecuado.Por ejemplo, si clase C<T> tiene un constructor C(T t1) (Sub New(ByVal t1 As T) en Visual Basic), al llamar a GetConstructors en C<int> devuelve un ConstructorInfo que representa C(int t1) en C# (Sub New(ByVal t1 As Integer) en Visual Basic).

Si la corriente Type representa un parámetro de tipo genérico, el GetConstructors método devuelve una matriz vacía.

Este ejemplo muestra el resultado de la GetConstructors() sobrecarga de una clase que tiene dos constructores de instancias y un constructor 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);
        }
    }
}

El resultado de este código es:

2

False

False

Dado que el GetConstructors sobrecarga utiliza sólo Public y Instance, el constructor estático no se calcula mediante la for expresión ni se evalúa con IsStatic.

Para buscar constructores estáticos, utilice el GetConstructors sobrecarga y pasarle la combinación (OR lógico) de BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublic, BindingFlags.Instance, como se muestra en el ejemplo de código siguiente:

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);
        }
    }
}

Ahora, el resultado es:

3

False

True

False

.NET Framework
Disponible desde 1.1
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar:
© 2016 Microsoft