TypeDelegator.InvokeMember Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Richiama il membro specificato. Il metodo da richiamare deve essere accessibile e fornire massima corrispondenza con l'elenco di argomenti specificato, in conformità ai vincoli del binder e degli attributi di chiamata specificati.
public:
override System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, cli::array <System::Reflection::ParameterModifier> ^ modifiers, System::Globalization::CultureInfo ^ culture, cli::array <System::String ^> ^ namedParameters);
public override object? InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object? target, object?[]? args, System.Reflection.ParameterModifier[]? modifiers, System.Globalization.CultureInfo? culture, string[]? namedParameters);
public override object InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters);
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public Overrides Function InvokeMember (name As String, invokeAttr As BindingFlags, binder As Binder, target As Object, args As Object(), modifiers As ParameterModifier(), culture As CultureInfo, namedParameters As String()) As Object
Parametri
- name
- String
Nome del membro da richiamare. Può essere un costruttore, un metodo, una proprietà o un campo. Se viene passata un stringa vuota (""), viene richiamato il membro predefinito.
- invokeAttr
- BindingFlags
Attributo di chiamata. Deve essere uno dei seguenti oggetti BindingFlags: InvokeMethod
, CreateInstance
, Static
, GetField
, SetField
, GetProperty
o SetProperty
. È necessario specificare un attributo di chiamata appropriato. Se verrà richiamato un membro statico, è necessario impostare il flag Static
.
- binder
- Binder
Oggetto che consente il binding, la coercizione dei tipi di argomento, la chiamata dei membri e il recupero di oggetti MemberInfo
tramite reflection. Se binder
è null
, verrà usato il binder predefinito. Vedere Binder.
- target
- Object
Oggetto su cui richiamare il membro specificato.
- args
- Object[]
Matrice di tipo Object
che contiene il numero, l'ordine e il tipo dei parametri del membro da richiamare. Se args
contiene un oggetto Object
non inizializzato, viene gestito come vuoto; con il gestore di associazione predefinito può essere ampliato a 0, 0.0 o a una stringa.
- modifiers
- ParameterModifier[]
Matrice di tipo ParameterModifier
della stessa lunghezza di args
con elementi che rappresentano gli attributi associati agli argomenti del membro richiamato. Nella firma del membro sono contenuti gli attributi associati a un parametro. Per ByRef, utilizzare ParameterModifier.ByRef
; per none, utilizzare ParameterModifier.None
. Il gestore di associazione predefinito esegue una corrispondenza esatta su questi elementi. Attributi come In
e InOut
non sono utilizzati nell'associazione e possono essere visualizzati utilizzando ParameterInfo
.
- culture
- CultureInfo
Istanza di CultureInfo
usata per regolare la coercizione dei tipi. È un'istanza necessaria, ad esempio, per convertire una stringa che rappresenta il numero 1000 in un valore Double, dal momento che questo numero è rappresentato in modo diverso nelle varie impostazioni cultura. Se culture
è null
, viene utilizzato CultureInfo per l'oggetto CultureInfo del thread corrente.
- namedParameters
- String[]
Matrice di stringhe che contiene i nomi dei parametri corrispondenti, a partire dall'elemento zero, alla matrice args
. La matrice non deve contenere spazi. Se args
.
Length
è maggiore di namedParameters
.
Length
, i parametri rimanenti verranno compilati in ordine.
Restituisce
Oggetto Object
che rappresenta il valore restituito del membro richiamato.
Commenti
Se entrambe le condizioni seguenti sono vere, verrà richiamato un metodo:
Il numero di parametri nella dichiarazione del metodo equivale al numero di argomenti nell'elenco di argomenti specificato (a meno che non siano definiti argomenti predefiniti nel membro).
Il tipo di ogni argomento può essere convertito dal binder al tipo del parametro.
Il binder troverà tutti i metodi corrispondenti. Questi metodi vengono trovati in base al tipo di associazione richiesta (BindingFlags.MethodInvoke
, BindingFlags.GetProperties
e così via). Il set di metodi viene filtrato dal nome, dal numero di argomenti e da un set di modificatori di ricerca definiti nel binder.
Dopo aver selezionato il metodo, verrà richiamato. L'accessibilità viene verificata a quel punto. La ricerca può controllare quale set di metodi vengono ricercati in base all'attributo di accessibilità associato al metodo . Il Binder.BindToMethod metodo è responsabile della selezione del metodo da richiamare. Il binder predefinito seleziona la corrispondenza più specifica.
Nota
Le restrizioni di accesso vengono ignorate per il codice completamente attendibile. Ovvero, i costruttori privati, i metodi, i campi e le proprietà possono essere accessibili e richiamati usando reflection ogni volta che il codice è completamente attendibile.
Attualmente, InvokeMember
esegue la semantica di reflection di Microsoft .NET Framework per ogni tipo di oggetto.
Se il membro specificato per nome è una matrice e il flag è impostato su invokeAttr
, la args
BindingFlags.GetField
matrice specifica gli elementi i cui valori devono essere restituiti. Ad esempio, la chiamata seguente tramite Type
oggetto t
restituisce il valore del primo elemento della matrice di stringhe MyArray, membro dell'oggetto chiamante:
String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});
È possibile usare InvokeMember
per impostare uno o più elementi di una matrice membro. Tutti gli elementi vengono impostati sullo stesso valore. La args
matrice deve essere formattata come segue:
{index1,
index2,, value}
Ad esempio, per impostare il primo membro di MyArray dall'esempio precedente, la sintassi è la seguente:
t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new
Variant[]{0,"Updated"});