Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

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

Cerca il costruttore i cui parametri corrispondono ai tipi di argomenti e ai modificatori specificati, utilizzando i vincoli di associazione e la convenzione di chiamata specificati.

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)
[ComVisibleAttribute(true)]
public ConstructorInfo GetConstructor(
	BindingFlags bindingAttr,
	Binder binder,
	CallingConventions callConvention,
	Type[] types,
	ParameterModifier[] modifiers
)

Parametri

bindingAttr
Tipo: System.Reflection.BindingFlags
Maschera di bit costituita da uno o più BindingFlags che consentono di specificare le modalità di esecuzione della ricerca.
In alternativa
Zero, per restituire null.
binder
Tipo: System.Reflection.Binder
Oggetto che definisce una serie di proprietà e consente l'associazione, che può implicare la scelta di un metodo di overload, la coercizione di tipi di argomento e la chiamata di un membro mediante reflection.
In alternativa
Riferimento null (Nothing in Visual Basic) per utilizzare la proprietà DefaultBinder.
callConvention
Tipo: System.Reflection.CallingConventions
Oggetto che specifica il set di regole da utilizzare per l'ordine e il layout degli argomenti, la modalità di passaggio del valore restituito, i registri utilizzati per gli argomenti e la pulizia dello stack.
types
Tipo: System.Type[]
Matrice di oggetti Type che rappresenta numero, ordine e tipo dei parametri relativi al costruttore da ottenere.
In alternativa
Matrice vuota di tipo Type (ovvero Type[] types = new Type[0]) per ottenere un costruttore che non accetta parametri.
modifiers
Tipo: System.Reflection.ParameterModifier[]
Matrice di oggetti ParameterModifier che rappresentano gli attributi associati all'elemento corrispondente nella matrice types. Questo parametro non viene elaborato dal gestore di associazione predefinito.

Valore restituito

Tipo: System.Reflection.ConstructorInfo
Oggetto che rappresenta il costruttore corrispondente ai requisiti specificati, se è stato trovato. In caso contrario, null.

Implementa

_Type.GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
EccezioneCondizione
ArgumentNullException

types è null.

In alternativa

Uno degli elementi in types è null.

ArgumentException

types è multidimensionale.

In alternativa

L'elemento modifiers è multidimensionale.

In alternativa

types e modifiers non hanno la stessa lunghezza.

Anche se il gestore di associazione predefinito non elabora ParameterModifier (il parametro modifiers), è possibile utilizzare la classe System.Reflection.Binder astratta per scrivere un gestore di associazione personalizzato che elabora modifiers. ParameterModifier viene utilizzato solo quando si effettuano chiamate tramite l'interoperabilità COM e vengono gestiti solo i parametri passati per riferimento.

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

È possibile utilizzare i seguenti flag di filtro BindingFlags per definire i costruttori da includere nella ricerca:

  • Per ottenere un risultato è necessario specificare BindingFlags.Instance o BindingFlags.Static.

  • Specificare BindingFlags.Public per includere nella ricerca costruttori di tipo pubblico.

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

Per ulteriori informazioni, vedere System.Reflection.BindingFlags.

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

Nella tabella riportata di seguito vengono illustrati i membri di una classe base restituiti dai metodi Get durante la reflection di un tipo.

Tipo di membro

Static

Non statico

Costruttore

No

No

Campo

No

Sì. Un campo è sempre di tipo nascondi in base al nome e alla firma.

Evento

Non applicabile

La regola di sistema di tipo comune è che l'eredità è la stessa dei metodi che implementano la proprietà. La reflection considera le proprietà come nascondi in base al nome e alla firma. Vedere la nota 2 più avanti.

Metodo

No

Sì. Un metodo (virtuale o non virtuale) può essere di tipo nascondi in base al nome oppure nascondi in base al nome e alla firma.

Tipo annidato

No

No

Proprietà

Non applicabile

La regola di sistema di tipo comune è che l'eredità è la stessa dei metodi che implementano la proprietà. La reflection considera le proprietà come nascondi in base al nome e alla firma. Vedere la nota 2 più avanti.

  1. Nascondi in base al nome e alla firma prende in considerazione tutte le parti della firma, compresi i modificatori personalizzati, i tipi restituiti, i tipi di parametri, i sentinel e le convenzioni di chiamate non gestite. Si tratta di un confronto binario.

  2. Per la reflection, le proprietà e gli eventi sono di tipo nascondi in base al nome e alla firma. Se una proprietà dispone della funzione di accesso get e della funzione di accesso set nella classe base, ma la classe derivata dispone solo di una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà della classe base e non sarà possibile accedere alla funzione di accesso set sulla classe base.

  3. Gli attributi personalizzati non fanno parte del sistema di tipi comune.

NotaNota

Non è possibile omettere parametri durante la ricerca di costruttori e metodi. I parametri possono essere omessi solo durante la chiamata.

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

Nell'esempio riportato di seguito viene ottenuto il tipo di MyClass1 , l'oggetto ConstructorInfo corrispondente ai 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 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 MyClass1 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 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);
        }
    }
}


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
© 2013 Microsoft. Tutti i diritti riservati.