Un'introduzione alla Reflection

2 pagine in totale: <<Indietro 1 [2]

Per invocare a run-time un metodo tramite Reflection occorre necessariamente creare un'istanza del tipo a cui è associato il metodo stesso. Per fare questo si ricorre dapprima alla classe System.Activator ed, in particolare, al metodo statico CreateInstance(Type) . Quindi viene chiamato il metodo Invoke(Object, Object[]) dell'istanza di classe MethodInfo ottenuta tramite le istruzioni citate in precedenza.

[VB.NET]

Dim asm As Assembly = Assembly.LoadFrom("myAssembly.dll")
Dim thisType As Type = asm.GetType("myClass")
Dim thisMethod As MethodInfo = thisType.GetMethod("myMethod")
Dim objInstance As Object = Activator.CreateInstance(thisType)
Dim paramsArray As Object()
paramsArray = New Object(1)
paramsArray(0) = "myParam"
thisMethod.Invoke(objInstance, paramsArray)

[C#]

Assembly asm = Assembly.LoadFrom("myAssembly.dll");
Type thisType = asm.GetType("myClass");
MethodInfo thisMethod = thisType.GetMethod("myMethod");
Object objInstance = Activator.CreateInstance(thisType);
Object[] paramsArray = new Object[1];
paramsArray[0] = "myParam";
thisMethod.Invoke(objInstance, paramsArray);

Se il metodo ritorna un valore, l'ultima riga di codice solitamente diventa:

[VB.NET]

Dim returnValue As Object = thisMethod.Invoke(objInstance, BindingFlags.DefaultBinding, Nothing, paramsArray, Nothing)

[C#]

Object returnValue = thisMethod.Invoke(objInstance, BindingFlags.DefaultBinding, null, paramsArray, null);

Conclusioni

La Reflection non è un argomento molto semplice, ma per uno sviluppatore "tipo" è molto importante conoscerne le caratteristiche e sapere in quali circostanze può essere utile: per esempio, nel caso di una chiamata ad un metodo internal o protected .
Oltre a questo, ogni sviluppatore accorto dovrebbe sempre disporre di un buon reflector tra i propri strumenti di lavoro: tramite un reflector è infatti possibile investigare all'interno di assembly ed eseguibili e ottenere in questo modo una rappresentazione completa di tutti i tipi contenuti e delle relative dipendenze.

Approfondimenti

2 pagine in totale: <<Indietro 1 [2]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC