我們使用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; } }