Logo UGIdotNET

Reflection e invocazione dinamica

Utilizzando il namespace System.Reflection è possibile caricare dinamicamente un assembly ed eseguire un metodo di un tipo definito al suo interno.

try
{
// Carico l'assembly
System.Reflection.Assembly Assem = System.Reflection.Assembly.LoadFrom();

// Il nome del tipo presente all'interno dell'assembly per esempio System.Data
Object Instance = Activator.CreateInstance();

// Dichiaro un array di tipi. In questo esempio la mia funzione accetta due interi
Type [] types = {System.Type.GetType("System.Int32"),System.Type.GetType("System.Int32")};

// Recupero il metodo Execute presente nell' assembly
MethodInfo NowMethod = OpType.GetMethod("Execute", types);

Object [] par ={0,0};

// Imposto i parametri da passare al metodo
par[0] = 40;
par[1] = 30;

// Invoco il metodo
MessageBox.Show("Result : " + NowMethod.Invoke(Instance, par));
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);

}

Autore: Fabio Santini [MS]
Data: 01 giugno 2002
Ultimo aggiornamento: 23 luglio 2004
Categorie: 

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185