天天看點

nginx 調用dll_C# 不進行引用調用第三方DLL

我們使用VS 開發工具 封裝的c# 類庫 在使用的過程中需要需要在解決方案下的項目中進行引用,而如果是C#腳本不能進行引用的話我們就需要進行其他的方法進行調用第三放的dll了。

我們可以使用 DllImport 調用第三方的dll 但是 C#封裝的DLL是非标準的DLL(托管類),不可以用 DllImport 調用,DllImport是用來調用标準類(非托管類)的,這類DLL一般是用C++寫的

是以DllImport 調用第三方的dll我們隻能使用 c++封裝的标準類,而我們自己使用c#的封裝的無法調用

DllImport 調用标準類方法

[DllImport("user32.dll", EntryPoint="MessageBoxA")]

static extern int MsgBox(int hWnd, string msg, string caption, int type);

EntryPoint 可以設定使用其他方法名

我們還需要配合申明 靜态方法才能使用

我們封裝的c#類庫 不可以使用這種方法去調用,由此我們可以使用反射,使用反射方法去調用c#封裝的非标準的dll 代碼如下:

Assembly asmA = Assembly.LoadFrom("c#封裝的dll");

string strClass = string.Empty;

if (null != asmA)

{

strClass = "調用方法所在類";

try

{

Type typeTest = asmA.GetType(strClass);

object obj = Activator.CreateInstance(typeTest);

System.Reflection.MethodInfo miMethod = typeTest.GetMethod("方法名");

string[] param = { 參數使用數組傳遞 };

var str=(string)miMethod.Invoke(obj, param);

Console.WriteLine(str);

}

catch (Exception e)

{

throw e;

}

}