Esporta (0) Stampa
Espandi tutto

Metodo Type.GetProperty (String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Aggiornamento: novembre 2007

Cerca la proprietà specificata i cui parametri corrispondono ai tipi di argomenti e ai modificatori specificati, utilizzando i vincoli di associazione 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
)
public final PropertyInfo GetProperty(
	String name,
	BindingFlags bindingAttr,
	Binder binder,
	Type returnType,
	Type[] types,
	ParameterModifier[] modifiers
)
public final function GetProperty(
	name : String, 
	bindingAttr : BindingFlags, 
	binder : Binder, 
	returnType : Type, 
	types : Type[], 
	modifiers : ParameterModifier[]
) : PropertyInfo

Parametri

name
Tipo: System.String
String contenente il nome della proprietà da ottenere.
bindingAttr
Tipo: System.Reflection.BindingFlags
Maschera di bit costituita da uno o più BindingFlags che consentono di specificare le modalità di esecuzione della ricerca.
-o-
Zero, per restituire null.
binder
Tipo: System.Reflection.Binder
Oggetto Binder che definisce una serie di proprietà e consente l'associazione, che può implicare la selezione di un metodo di overload, l'assegnazione forzata dei tipi di argomento e la chiamata di un membro mediante reflection.
-o-
null, per utilizzare DefaultBinder.
returnType
Tipo: System.Type
Tipo restituito della proprietà.
types
Tipo: System.Type[]
Matrice di oggetti Type che rappresentano numero, ordine e tipo dei parametri relativi alla proprietà indicizzata da ottenere.
-o-
Matrice vuota di tipo Type (ovvero Type[] types = new Type[0]) per ottenere una proprietà non indicizzata.
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.PropertyInfo
Oggetto PropertyInfo che rappresenta la proprietà corrispondente ai requisiti specificati, se è stato trovato. In caso contrario, null.

Implementa

_Type.GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])
IReflect.GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

EccezioneCondizione
AmbiguousMatchException

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

ArgumentNullException

nameè null.

-o-

typesè null.

ArgumentException

types è multidimensionale.

-o-

modifiers è multidimensionale.

-o-

types e modifiers non hanno la stessa lunghezza.

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 e, per ottenerla, è necessario utilizzare BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic combinare i valori utilizzando Or).

Sebbene il gestore di associazione predefinito non elabori l'oggetto ParameterModifier (il parametro modifiers ), è possibile utilizzare la classe astratta System.Reflection.Binder per scrivere un gestore di associazione personalizzato che elabori modifiers . ParameterModifier viene utilizzato solo per le chiamate tramite interoperabilità COM e vengono gestiti solo parametri passati per riferimento.

Nella tabella che segue sono illustrati i membri di una classe base restituiti dai metodi Get durante la reflection di un tipo.

Tipo di membro

Statico

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 nidificato

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.

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

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

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

  • Specificare BindingFlags.NonPublic per includere nella ricerca proprietà di tipo non pubblico, ovvero proprietà private e protette.

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

È possibile utilizzare i seguenti flag di modifica BindingFlags per modificare le modalità di esecuzione della ricerca:

  • BindingFlags.IgnoreCase per ignorare l'utilizzo di maiuscole e minuscole in name.

  • BindingFlags.DeclaredOnly per cercare solo le proprietà dichiarate su Type e non quelle semplicemente ereditate.

Per ulteriori informazioni, vedere System.Reflection.BindingFlags.

Se la proprietà richiesta non è pubblica e il chiamante non dispone dell'oggetto ReflectionPermission necessario per eseguire la reflection degli oggetti non pubblici al di fuori dell'assembly corrente, il metodo restituisce null.

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. Ad esempio, se la variabile myList fa riferimento a un oggetto ArrayList, la sintassi myList[3] (myList(3) in Visual Basic) consentirà di recuperare 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 include ad esempio un indicizzatore denominato Chars. Alle proprietà indicizzate create utilizzando linguaggi diversi da C# è inoltre 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.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition , Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile per Smartphone, Windows Mobile per Pocket PC, Xbox 360

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

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

.NET Compact Framework

Supportato in: 3.5, 2.0, 1.0

XNA Framework

Supportato in: 2.0, 1.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft