Esporta (0) Stampa
Espandi tutto

Metodo IReflect.InvokeMember

Aggiornamento: novembre 2007

Richiama un membro specificato.

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

Object InvokeMember(
	string name,
	BindingFlags invokeAttr,
	Binder binder,
	Object target,
	Object[] args,
	ParameterModifier[] modifiers,
	CultureInfo culture,
	string[] namedParameters
)
Object InvokeMember(
	String name,
	BindingFlags invokeAttr,
	Binder binder,
	Object target,
	Object[] args,
	ParameterModifier[] modifiers,
	CultureInfo culture,
	String[] namedParameters
)
function InvokeMember(
	name : String, 
	invokeAttr : BindingFlags, 
	binder : Binder, 
	target : Object, 
	args : Object[], 
	modifiers : ParameterModifier[], 
	culture : CultureInfo, 
	namedParameters : String[]
) : Object

Parametri

name
Tipo: System.String

Nome del membro da ricercare.

invokeAttr
Tipo: System.Reflection.BindingFlags

Uno degli attributi di chiamata di BindingFlags. Il parametro invokeAttrpuò essere un costruttore, un metodo, una proprietà o un campo. È necessario specificare un attributo di chiamata appropriato. Richiamare il membro predefinito di una classe passando una stringa vuota ("") come nome del membro.

binder
Tipo: System.Reflection.Binder

Uno dei flag di bit di BindingFlags. Implementa l'oggetto Binder, contenente le proprietà relative a questo metodo.

target
Tipo: System.Object

Oggetto su cui richiamare il membro specificato. Il parametro viene ignorato nel caso dei membri statici.

args
Tipo: System.Object[]

Matrice di oggetti che contiene il numero, l'ordine e il tipo dei parametri del membro da richiamare. Si tratta di una matrice vuota se non sono disponibili parametri.

modifiers
Tipo: System.Reflection.ParameterModifier[]

Matrice di oggetti ParameterModifier. Questa matrice ha la stessa lunghezza del parametro args che rappresenta gli attributi degli argomenti del membro richiamato nei metadati. Un parametro può avere i seguenti attributi: pdIn, pdOut, pdRetval, pdOptional e pdHasDefault. Questi rappresentano rispettivamente [In], [Out], [retval], [optional] e un parametro predefinito. Questi attributi sono utilizzati da vari servizi di interoperabilità.

culture
Tipo: System.Globalization.CultureInfo

Istanza di CultureInfo utilizzata per gestire la coercizione. Ad esempio, culture converte un oggetto String che rappresenta il numero 1000 in un valore Double, dal momento che 1000 è rappresentato in modo diverso nelle varie lingue. Se questo parametro è null, viene utilizzato l'oggetto CultureInfo per il thread corrente.

namedParameters
Tipo: System.String[]

Matrice di parametri String.

Valore restituito

Tipo: System.Object

Membro specificato.

EccezioneCondizione
ArgumentException

invokeAttr è BindingFlags.CreateInstance; viene impostato anche un altro flag di bit.

ArgumentException

invokeAttr non è BindingFlags.CreateInstance e name è null.

ArgumentException

invokeAttr non è un attributo di chiamata da BindingFlags.

ArgumentException

invokeAttr specifica sia get sia set per una proprietà o un campo.

ArgumentException

invokeAttr specifica sia un metodo set sia un metodo Invoke di campo. Il parametro args è fornito per un metodo get di campo.

ArgumentException

Sono stati specificati più argomenti per un metodo set di campo.

MissingFieldException

Impossibile trovare il campo o la proprietà.

MissingMethodException

Impossibile trovare il metodo.

SecurityException

Viene richiamato un membro privato senza l'oggetto ReflectionPermission necessario.

Il metodo da richiamare deve essere accessibile e deve fornire la massima corrispondenza all'elenco di argomenti specificato, in base ai vincoli del gestore di associazione e degli attributi di chiamata specificati.

Viene chiamato un metodo se il numero di parametri nella dichiarazione del metodo è uguale al numero di argomenti nell'elenco di argomenti specificato e il tipo di ogni argomento può essere convertito dal gestore di associazione nel tipo del parametro.

Nota:

La matrice di modificatori di parametri passata al metodo InvokeMember deve contenere un singolo modificatore di parametri. Viene considerato solo il primo modificatore di parametri quando si determina quale argomento occorre passare per riferimento una volta esposto a COM.

Il gestore di associazione rileva tutti i metodi corrispondenti in base al tipo di associazione richiesta (BindingFlags.InvokeMethod, GetProperties e così via). Il gruppo di metodi viene filtrato per nome, numero di argomenti e gruppo di modificatori di ricerca definiti nel gestore di associazione. Dopo essere stato selezionato, il metodo viene richiamato e ne viene controllata l'accessibilità. La ricerca può verificare quali gruppi di metodi sono ricercati in base all'attributo di accessibilità associato al metodo. BindToMethod seleziona il metodo da richiamare. Il gestore di associazione predefinito seleziona la corrispondenza più specifica.

Le restrizioni di accesso vengono ignorate nel caso di codice completamente attendibile. È pertanto possibile accedere e richiamare costruttori privati, metodi, campi e proprietà attraverso la funzionalità di reflection quando il codice è completamente attendibile.

Nell'esempio riportato di seguito viene ottenuto il valore della proprietà Now.

using System;
using System.Reflection;

public class MainClass 
{ 
    public static void Main(string[] args)
    {
        Type tDate = typeof(System.DateTime);
        Object result = tDate.InvokeMember("Now", 
            BindingFlags.GetProperty, null, null, new Object[0]);
        Console.WriteLine(result.ToString());
    }
}


import System.*;
import System.Reflection.*;

public class MainClass
{   
    public static void main(String[] args)
    {
        Type tDate = Type.GetType("System.DateTime");
        Object result = tDate.InvokeMember("Now", 
            BindingFlags.GetProperty, null, null, new Object[0]);
        Console.WriteLine(result.ToString());
    } //main
} //MainClass


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

.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

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft