Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo Type.GetProperty (String, Type[])

Cerca la proprietà pubblica specificata i cui parametri corrispondono ai tipi di argomenti specificati.

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

public PropertyInfo GetProperty(
	string name,
	Type[] types
)

Parametri

name
Tipo: System.String
Stringa contenente il nome della proprietà pubblica da ottenere.
types
Tipo: System.Type[]
Matrice di oggetti Type che rappresentano numero, ordine e tipo dei parametri relativi alla proprietà indicizzata da ottenere.
-oppure-
Matrice vuota di tipo Type (ovvero Type[] types = new Type[0]) per ottenere una proprietà non indicizzata.

Valore restituito

Tipo: System.Reflection.PropertyInfo
Oggetto che rappresenta la proprietà pubblica i cui parametri corrispondono ai tipi di argomenti specificati, se è stato trovato. In caso contrario, null.

Implementa

_Type.GetProperty(String, Type[])

EccezioneCondizione
AmbiguousMatchException

È stata trovata più di una proprietà con il nome specificato e corrispondente ai tipi di argomenti specificati.

ArgumentNullException

name è null.

-oppure-

types è null.

ArgumentException

types è multidimensionale.

NullReferenceException

Un elemento di types è null.

Una proprietà viene considerata pubblica per la reflection se possiede almeno una funzione di accesso pubblica. In caso contrario, la proprietà viene considerata privata ed è necessario utilizzare BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combinare i valori utilizzando Or) per ottenerlo.

La ricerca di name viene eseguita facendo distinzione tra maiuscole e minuscole. La ricerca include proprietà di istanza public static e public.

Se l'oggetto Type corrente rappresenta un tipo generico costruito, questo metodo restituisce gli oggetti PropertyInfo 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, mediante questo metodo verranno cercate le proprietà del vincolo di classe.

Indicizzatori e proprietà predefinite

In Visual Basic 2005, Visual C# 2005 e Visual C++ 2005 è disponibile la sintassi semplificata per l'accesso alle proprietà indicizzate ed è consentito specificare come predefinita per il relativo tipo una singola proprietà indicizzata. Se ad esempio la variabile myList fa riferimento a un oggetto ArrayList, la sintassi myList[3] (myList(3) in Visual Basic) recupera l'elemento con indice 3. È possibile eseguire l'overload della proprietà.

In C# questa funzionalità viene chiamata indicizzatore e non è possibile farvi riferimento in base al nome. Per impostazione predefinita, un indicizzatore C# viene visualizzato nei metadati come proprietà indicizzata denominata "Item". Tuttavia, uno sviluppatore di librerie di classi può utilizzare l'attributo IndexerNameAttribute per modificare il nome dell'indicizzatore nei metadati. La classe String, ad esempio, include un indicizzatore denominato Chars. Alle proprietà indicizzate create utilizzando linguaggi diversi da C# è anche possibile assegnare nomi diversi da Item.

Per determinare se per un tipo è disponibile una proprietà predefinita, utilizzare il metodo GetCustomAttributes(Type, Boolean) per testare l'attributo DefaultMemberAttribute. Se per il tipo è disponibile l'attributo DefaultMemberAttribute, l'attributo MemberName restituisce il nome della proprietà predefinita.

Nell'esempio riportato di seguito viene recuperato l'oggetto Type appartenente a una classe definita dall'utente, viene recuperata la proprietà di tale classe e vengono visualizzati il nome e il tipo relativi alla proprietà, come specificato dagli argomenti passati a GetProperty.



using System;
using System.Reflection;
class MyClass1
{         
    private int [,] myArray = {{1,2},{3,4}}; 
    // Declare an indexer.
    public int this [int i,int j]   
    {
        get 
        {
            return myArray[i,j];
        }
        set 
        {
            myArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        { 
            // Get the Type object.
            Type myType=typeof(MyClass1);       
            Type[] myTypeArr = new Type[2];
            // Create an instance of a Type array.
            myTypeArr.SetValue(typeof(int),0);            
            myTypeArr.SetValue(typeof(int),1);
            // Get the PropertyInfo object for the indexed property Item, which has two integer parameters. 
            PropertyInfo myPropInfo = myType.GetProperty("Item", myTypeArr);
            // Display the property.
            Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.ToString());
        }           
        catch(NullReferenceException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Source : {0}" , e.Source);
            Console.WriteLine("Message : {0}" , e.Message);
        }
    }
}


.NET Framework

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

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, 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.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft