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, BindingFlags, Binder, Type, Type[], ParameterModifier[])

 

Data di pubblicazione: ottobre 2016

Cerca la proprietà specificata i cui parametri corrispondono ai tipi di argomenti e ai modificatori specificati, usando i vincoli di binding specificati.

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

public PropertyInfo GetProperty(
	string name,
	BindingFlags bindingAttr,
	Binder binder,
	Type returnType,
	Type[] types,
	ParameterModifier[] modifiers
)

Parametri

name
Type: System.String

Stringa che contiene il nome della proprietà da ottenere.

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.

returnType
Type: System.Type

Tipo restituito della proprietà.

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.

modifiers
Type: System.Reflection.ParameterModifier[]

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

Valore restituito

Type: System.Reflection.PropertyInfo

Oggetto che rappresenta la proprietà corrispondente ai requisiti specificati, se presente; in caso contrario, null.

Exception Condition
AmbiguousMatchException

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

ArgumentNullException

name è null.

-oppure-

types è null.

ArgumentException

types è multidimensionale.

-oppure-

modifiers è multidimensionale.

-oppure-

types e modifiers non hanno la stessa lunghezza.

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.

Anche se il binder predefinito elabora ParameterModifier (il modifiers parametro), è possibile utilizzare la classe astratta System.Reflection.Binder classe per la scrittura di un gestore di associazione personalizzato che elaborano modifiers. ParameterModifierviene utilizzato solo quando una chiamata tramite l'interoperabilità COM, e vengono gestiti solo i parametri che vengono passati per riferimento.

La tabella seguente mostra quali vengono restituiti dai membri di una classe di base di Get metodi durante la reflection su un tipo.

Tipo di membro

Statico

Non statico

Costruttore

No

No

Campo

No

Sì. Un campo è sempre Nascondi in base al nome e-firma.

Evento

Non applicabile

La regola di sistema di tipo comune è che l'ereditarietà è uguale a quello dei metodi che implementa la proprietà. La reflection gestisce proprietà come Nascondi in base al nome e-firma. Vedere la nota 2 di seguito.

Metodo

No

Sì. Un metodo (virtuale e non virtuale) può essere hide-by-name o Nascondi in base al nome e-firma.

Tipo annidato

No

No

Proprietà

Non applicabile

La regola di sistema di tipo comune è che l'ereditarietà è uguale a quello dei metodi che implementa la proprietà. La reflection gestisce proprietà come Nascondi in base al nome e-firma. Vedere la nota 2 di seguito.

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

  2. Per la reflection, proprietà ed eventi sono Nascondi in base al nome e-firma. Se si dispone di una proprietà con sia un'operazione get e set nella classe base, ma la classe derivata contiene solo una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà di classe di base e non sarà in grado di accedere il setter sulla classe di base.

  3. Attributi personalizzati non fanno parte di common type system.

Le operazioni seguenti BindingFlags flag del filtro possono essere utilizzati per definire le proprietà da includere nella ricerca:

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

  • Specificare BindingFlags.Public per includere le proprietà pubbliche nella ricerca.

  • Specificare BindingFlags.NonPublic per includere proprietà pubblici (proprietà, private, interne e protette) nella ricerca.

  • Specificare BindingFlags.FlattenHierarchy includere public e protected membri statici nella gerarchia; private membri statici nelle classi ereditate non sono inclusi.

Le operazioni seguenti BindingFlags flag di modifica consente di modificare le modalità di ricerca:

  • BindingFlags.IgnoreCaseper ignorare la distinzione di name.

  • BindingFlags.DeclaredOnlyeseguire la ricerca solo le proprietà dichiarate sul Type, non proprietà quelli ereditati.

Per altre informazioni, vedere System.Reflection.BindingFlags.

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.

.NET Framework
Disponibile da 1.1
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: