Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

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

 

Data di pubblicazione: ottobre 2016

Cerca un costruttore i cui parametri corrispondono ai tipi e ai modificatori dell'argomento specificato, usando i vincoli di binding specificati.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

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

Parametri

bindingAttr
Type: System.Reflection.BindingFlags

Maschera di bit costituita da uno o più BindingFlags che consente di specificare le modalità di esecuzione della ricerca.

-oppure-

Zero, per restituire null.

binder
Type: System.Reflection.Binder

Oggetto che definisce una serie di proprietà e permette il binding, che può implicare la scelta di un metodo di overload, la coercizione di tipi di argomento e la chiamata di un membro mediante reflection.

-oppure-

Riferimento Null (Nothing in Visual Basic) per l'uso di DefaultBinder.

types
Type: System.Type[]

Matrice di oggetti Type che rappresenta numero, ordine e tipo dei parametri relativi al costruttore da ottenere.

-oppure-

Matrice vuota di tipo Type (ovvero Type[] types = new Type[0]) per ottenere un costruttore che non accetta parametri.

-oppure-

EmptyTypes.

modifiers
Type: System.Reflection.ParameterModifier[]

Matrice di oggetti ParameterModifier che rappresentano gli attributi associati all'elemento corrispondente nella matrice del tipo di parametro. Questo parametro non viene elaborato dal binder predefinito.

Valore restituito

Type: System.Reflection.ConstructorInfo

Oggetto ConstructorInfo che rappresenta il costruttore corrispondente ai requisiti specificati, se presente; in caso contrario, null.

Exception Condition
ArgumentNullException

types è null.

-oppure-

Uno degli elementi in types è null.

ArgumentException

types è multidimensionale.

-oppure-

modifiers è multidimensionale.

-oppure-

types e modifiers non hanno la stessa lunghezza.

Se non esiste una corrispondenza esatta, la binder tenterà di assegnare forzatamente i tipi di parametro specificati nel types matrice per selezionare una corrispondenza. Se il binder non è in grado di selezionare una corrispondenza, quindi null viene restituito.

Le operazioni seguenti BindingFlags flag del filtro può essere utilizzato per definire i costruttori da includere nella ricerca:

  • È necessario specificare BindingFlags.Instance o BindingFlags.Static per ottenere un risultato.

  • Specificare BindingFlags.Public per includere i costruttori pubblici nella ricerca.

  • Specificare BindingFlags.NonPublic per includere nella ricerca i costruttori pubblici (ovvero, i costruttori privati, interni e protetti).

Per altre informazioni, vedere System.Reflection.BindingFlags.

Per ottenere l'inizializzatore di classi (. cctor) tramite l'overload di questo metodo, è necessario specificare BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). È inoltre possibile ottenere l'inizializzatore di classi tramite il TypeInitializer proprietà.

System_CAPS_noteNota

È possibile omettere i parametri per la ricerca di costruttori e metodi. È possibile omettere i parametri solo quando viene richiamato.

Se l'oggetto corrente Type rappresenta un tipo generico costruito, questo metodo restituisce il ConstructorInfo con i parametri di tipo sostituiti dagli argomenti di tipo appropriato. Se l'oggetto corrente Type rappresenta un parametro di tipo nella definizione di un tipo generico o un metodo generico, questo metodo restituisce sempre null.

Il programma seguente ottiene il tipo di MyClass1 classe, ottiene il ConstructorInfo oggetto corrispondenza il flag di associazione specificati e viene visualizzata la firma del costruttore.

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
Disponibile da 1.1
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: