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

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

 

Publicado: octubre de 2016

Busca un constructor cuyos parámetros coincidan con los tipos y modificadores de argumento especificados, mediante las restricciones de enlace también especificadas.

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

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

Parámetros

bindingAttr
Type: System.Reflection.BindingFlags

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.

binder
Type: System.Reflection.Binder

Objeto que define un conjunto de propiedades y permite realizar operaciones de enlace, que pueden incluir la selección de un método sobrecargado, la coerción de tipos de argumentos y la invocación de un miembro mediante reflexión.

o bien

Referencia nula (Nothing en Visual Basic) para usar la propiedad DefaultBinder.

types
Type: System.Type[]

Matriz de objetos Type que representa el número, el orden y el tipo de parámetros que el constructor debe obtener.

o bien

Matriz vacía del tipo Type (es decir, Type[] types = new Type[0]) para obtener un constructor que no requiera parámetros.

O bien

EmptyTypes.

modifiers
Type: System.Reflection.ParameterModifier[]

Matriz de objetos ParameterModifier que representan los atributos asociados al elemento correspondiente de la matriz de tipo de parámetro. El enlazador predeterminado no procesa este parámetro.

Valor devuelto

Type: System.Reflection.ConstructorInfo

Objeto ConstructorInfo que representa el constructor que cumple los requisitos especificados, si se encuentra; en caso contrario, es null.

Exception Condition
ArgumentNullException

El valor de types es null.

O bien

Uno de los elementos de types es null.

ArgumentException

types es multidimensional.

O bien

modifiers es multidimensional.

O bien

types y modifiers no tienen la misma longitud.

Si no existe una coincidencia exacta, la 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.

El siguiente BindingFlags marcas de filtro se pueden utilizar para definir los constructores que deben incluirse en la búsqueda:

  • Debe especificar BindingFlags.Instance o BindingFlags.Static con el fin de obtener un valor devuelto.

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

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

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

System_CAPS_noteNota

No se puede omitir los parámetros al buscar constructores y métodos. Solo puede omitir los parámetros al invocar.

Si la actual Type representa un tipo genérico construido, este método devuelve el ConstructorInfo con los parámetros de tipo sustituidos por los argumentos de tipo adecuado. Si la actual Type representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método devuelve siempre null.

El programa siguiente obtiene el tipo de MyClass1 de la clase, obtiene la ConstructorInfo objeto coincidencia de las marcas de enlace especificadas y muestra la firma del constructor.

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 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 MyClass1 that is public " +
                    "and takes an integer as a parameter is:");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of the MyClass1 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);
        }
    }
}

.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: