Reflection反射運用在很多的技巧上,這次筆者要介紹的,是將已經編譯過的dll檔,透過Reflection來使用裡面的類別。
下面建立一個 ReflectionExample 專案:
public abstract class ReflClassBase
{
public abstract int add(int v1, int v2);
}
public class ReflClass : ReflClassBase
{
public ReflClass()
{ }
public override int add(int v1, int v2)
{
return v1
+ v2;
}
}
將上面的程式編譯過後,會產生一個ReflectionExample.dll的副檔名,新建一個Windows Form應用程式的專案後,將這個dll載入專案裡。
namespace WindowsFormsApplication
{
public partial class Form1 : Form1
{
public Form1()
{
InitializeComponent();
Assembly oa = Assembly.Load("ReflectionExample");
Type t = oa.GetType("ReflectionExample.TClass");
TClassBase tcb = (TClass)Activator.CreateInstance(MyType);
MessageBox.Show(tcb.add(1, 2).ToString());
}
}
}
上面的程式結果,就會執行顯示1+2的結果。這種設計概念,是可用運用在編寫好的類別,如視窗,透過反射而可以產生不同的視窗介面。
-雲遊山水為知已逍遙一生而忘齡- 電腦神手
沒有留言:
張貼留言