程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#中如何動態加載Dll

C#中如何動態加載Dll

編輯:關於C#

1、新建測試dll及方法,用vs2010新建winform程序,具體代碼如下:

using System;  
using System.Collections.Generic;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Linq;  
using System.Text;  
using System.Windows.Forms;  
     
namespace reflect  
{  
    public partial class Form1 : Form  
    {  
        public Form1()  
        {  
            InitializeComponent();  
        }  
        public string TestReflect()  
        {  
            MessageBox.Show("動態加載Dll測試");  
            return "TestReflect返回值";  
        }  
    }  
}

2、動態加載代碼

using System;  
using System.Collections.Generic;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Linq;  
using System.Text;  
using System.Windows.Forms;  
using System.Reflection;  
     
namespace reflectTest  
{  
    public partial class Form1 : Form  
    {  
        public Form1()  
        {  
            InitializeComponent();  
        }  
        private void button1_Click(object sender, EventArgs e)  
        {  
            //加載dll中的函數  
            //Assembly asm = Assembly.Load(strDllPath);//加載當前根目錄的dll  
            Assembly asm = Assembly.LoadFile(@"F:\WorkSpace\VS測試代碼\反射測試001\反射message方法\reflect\reflect\bin\Debug\reflect.dll");//根據dll文件實際路徑加載  
            //用類型的命名空間和類獲得類型  
            System.Type FromClass = asm.GetType("reflect.Form1");  
            //需要實例化類型,才可以使用,參數可以人為的指定,也可以無參數,靜態實例可以省略  
            Object obj = System.Activator.CreateInstance(FromClass);  
            //通過方法名稱獲得方法(調試走到下面這一步的時候,就可以彈出“動態加載Dll測試”這個消息了)  
            MethodInfo method = FromClass.GetMethod("TestReflect");  
            //獲取TestReflect函數的返回值,在這裡會獲取到"TestReflect返回值",如果沒有返回值,可以省略這一步  
            object o = method.Invoke(obj, new object[] { });  
        }  
    }  
}

小注:

通過方法名稱獲得方法中的方法必須是public的!

本文URL:http://www.bianceng.cn/Programming/csharp/201410/45595.htm

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved