利用Assembly動態載入程式集
在程式開發中,經常需要呼叫到外部的DLL,所以需要反射技術,動態的載入程式集,方便呼叫.
例如我們建立一個這樣的類:
例如我們建立一個這樣的類:
namespace User
{
public class ShowName
{
public ShowName()
: this("")
{ }
public ShowName(string Name)
{
name = Name;
}
public string Name
{
get { return name; }
set { name = value; }
}
private string name;
public void ShowMe()
{
Console.WriteLine("I'm " + name);
}
public static int Main()
{
Console.WriteLine("location in User");
return 0;
}
}
}
在一般情況下,我們只需要在程式碼中這樣呼叫就可以:
public class Program
{
static void Main(string[] args)
{
ShowName sn = new ShowName("Alex");
sn.ShowMe();
Console.ReadLine();
}
}
如果需要在程式執行時動態載入,就需要用到Assembly類來實現,注意:(把上面的第一段程式碼,生成一個叫User.Dll)
一、Assembly.Load
這個方法接受一個AssemblyName例項作為一個引數,返回對應的程式集,實現的方法如下:
public class Program
{
static void Main(string[] args)
{
Assembly a = Assembly.Load("User");
Type t = a.GetType("User.ShowName");
foreach (MethodInfo mf in t.GetMethods())
{
Console.WriteLine(mf.Name); //輸出User.dll裡面的所有方法
}
object user = a.CreateInstance(t.FullName);
object[] name = new object[1]; //新建一個陣列,把引數傳進去
name[0] = "Alex";
MethodInfo setname = t.GetMethod("set_Name"); //這個set_Name就是Name的set方法
setname.Invoke(user, name); //這裡把name引數傳進去
MethodInfo show = t.GetMethod("ShowMe");
show.Invoke(user, null);
Console.ReadLine();
}
}
這裡輸出的結果為:
get_Name
set_Name
ShowMe
Main
ToString
Equals
GetHashCode
GetType
I'm Alex
二、Assembly.LoadForm方法
該方法根據程式集的檔名與路徑來載入程式集。
三、Assembly.LoadWithPartialName方法
該方法使用部分名稱從應用程式目錄或從全域性程式集快取載入程式集。
Assembly a = Assembly.Load("User,version=1.0.0.0")來控制就可以了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-610729/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 動態載入程式集(三) (轉)
- .NET 動態載入程式集 (一) (轉)
- DLL動態庫動態載入
- 利用nginx做後臺伺服器的動態載入和負載均衡Nginx伺服器負載
- vue 動態載入元件Vue元件
- Java動態載入類Java
- 利用html5實現的loadding動態載入效果HTML
- [轉] 從 dll 程式集中動態載入窗體
- 動態載入javascript指令碼程式碼例項JavaScript指令碼
- js動態載入外部css檔案程式碼JSCSS
- 利用JQuery的load函式動態載入頁面 以及jQuery動態載入頁面和請求所返回的資料jQuery函式
- 藉助 Webpack 靜態分析能力實現程式碼動態載入Web
- javascript動態載入css檔案程式碼例項JavaScriptCSS
- 動態載入UserControl
- OrchardCore 如何動態載入模組?
- 使用dlopen載入動態庫
- ListView動態載入資料View
- QLibrary 載入動態庫
- vue 動態載入組建Vue
- goloader - golang動態載入Golang
- 熱更新--動態載入frameworkFramework
- 動態庫載入過程
- 動態載入APK原理分享APK
- 動態載入JS和CSSJSCSS
- 動態載入JS的方法JS
- 動態載入!dom應用!
- python動態載入(三)Python
- 指令碼的動態載入指令碼
- C# 如何利用反射來載入程式集,並呼叫程式集中有關類的方法C#反射
- Could not load file or assembly or one of its dependencies 試圖載入格式不正確的程式
- 動態加栽程式集(二) (轉)
- 動態載入js或者css檔案程式碼例項JSCSS
- 實現js檔案動態載入程式碼例項JS
- js動態載入實現提高網頁載入速度JS網頁
- EasyUI Jquery 動態載入樹,點選節點載入UIjQuery
- echarts遷移圖動態載入Echarts
- 如何動態載入js檔案JS
- Android動態載入jar/dexAndroidJAR