Condividi tramite


TypeDelegator.InvokeMember Metodo

Definizione

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.GetPropertiese 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 argsBindingFlags.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"});  

Si applica a

Vedi anche