2014年2月7日 星期五

C# - Reflection反射運用 Part 2 載入dll實作


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的結果。這種設計概念,是可用運用在編寫好的類別,如視窗,透過反射而可以產生不同的視窗介面。



-雲遊山水為知已逍遙一生而忘齡- 電腦神手

沒有留言:

張貼留言