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.GetProperty (String, Type[])

 

Data di pubblicazione: ottobre 2016

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
Type: System.String

Stringa che contiene il nome della proprietà pubblica da ottenere.

types
Type: 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

Type: System.Reflection.PropertyInfo

Oggetto che rappresenta la proprietà pubblica i cui parametri corrispondono ai tipi di argomenti specificati, se presente; in caso contrario, null.

Exception Condition
AmbiguousMatchException

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

ArgumentNullException

name è null.

-oppure-

types è null.

ArgumentException

types è multidimensionale.

NullReferenceException

Un elemento di types è null.

Una proprietà è considerata pubblica per la reflection se dispone di almeno una funzione di accesso pubblico. 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 tra maiuscole e minuscole. La ricerca include proprietà di istanza pubblico statico e pubblico.

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

Visual Basic 2005, Visual C# 2005, e Visual C++ 2005 hanno la sintassi semplificata per l'accesso alle proprietà indicizzate e consentire una proprietà indicizzata da un valore predefinito per il relativo tipo. Ad esempio, se la variabile myList fa riferimento a un ArrayList, la sintassi myList[3] (myList(3) in Visual Basic) recupera l'elemento con indice 3. È possibile eseguire l'overload di proprietà.

In c#, questa funzionalità viene chiamata un indicizzatore e non è possibile farvi riferimento in base al nome. Per impostazione predefinita, un indicizzatore c# presente nei metadati come una proprietà indicizzata denominata "Item". Tuttavia, uno sviluppatore di libreria di classi è possibile utilizzare il IndexerNameAttribute attributo per modificare il nome dell'indicizzatore nei metadati. Ad esempio, il String classe dispone di un indicizzatore denominato Chars. Proprietà indicizzate create utilizzando linguaggi diversi da c# possono avere nomi diversi da elementi, nonché. 

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

Nell'esempio seguente viene recuperato il Type oggetto di una classe definita dall'utente, viene recuperata la proprietà di tale classe e visualizza il nome della proprietà e il tipo della 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
Disponibile da 1.1
Torna all'inizio
Mostra: