1. 程式人生 > >C# 獲取資原始檔中的DLL,呼叫DLL中的方法

C# 獲取資原始檔中的DLL,呼叫DLL中的方法

轉自:http://blog.163.com/[email protected]/blog/static/16920433220127193511096/

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;

namespaceResourceDemo
{
publicpartialclassForm1:Form
{
publicForm1

()
{
InitializeComponent();

// Reso_1();
Reso_2();
}


/// <summary>
/// 呼叫資原始檔中類的方法
/// 方法中包含引數、沒有返回值
/// </summary>
voidReso_1()
{
//資原始檔中的類
object obj;
//資原始檔中的DLL
System.Reflection.Assembly ass =System.Reflection.Assembly.Load(ResourceDemo.Properties.Resources.PackDLL);
//獲取DLL中的型別(名稱空間+類的方法名稱)
Type type = ass.GetType
("PackDLL.FileAndDir.Log.PackApplicaitonLog");
//獲取類中的方法(第一個引數類的方法名稱,第二個引數是)
System.Reflection.MethodInfo mi = type.GetMethod("WriteLog",newType[]{typeof(string),typeof(string),typeof(string)});
//建立資原始檔中類的例項(名稱空間+類的方法名稱)
obj = ass.CreateInstance("PackDLL.FileAndDir.Log.PackApplicaitonLog");
//呼叫資原始檔中類的方法(第一個引數類的例項,第二個引數列表)

mi.Invoke(obj,newobject[]{"app","app.txt","我定義了異常"});

}

/// <summary>
/// 呼叫資原始檔中類的方法
/// 方法中不包含引數、帶有返回值
/// </summary>
voidReso_2()
{
//PackDLL.Local.Localhost.PackComputerPhysics.GetCpuID
//資原始檔中的類
object obj;
//資原始檔中的DLL
System.Reflection.Assembly ass =System.Reflection.Assembly.Load(ResourceDemo.Properties.Resources.PackDLL);
//獲取DLL中的型別(名稱空間+類的方法名稱)
Type type = ass.GetType("PackDLL.Local.Localhost.PackComputerPhysics");
//獲取類中的方法(第一個引數類的方法名稱,第二個引數是)
System.Reflection.MethodInfo mi = type.GetMethod("GetCpuID");
//建立資原始檔中類的例項(名稱空間+類的方法名稱)
obj = ass.CreateInstance("PackDLL.Local.Localhost.PackComputerPhysics");
//呼叫方法,如果方法中不包含引數,invoke第二個引數列表可以用null代替
string cpuId = mi.Invoke(obj,null).ToString();
}
}
}




相關推薦

C# 獲取原始檔DLL呼叫DLL方法

轉自:http://blog.163.com/[email protected]/blog/static/16920433220127193511096/ usingSystem;usingSystem.Collections.Generic;usingSyst

QT生成DLL呼叫DLL

使一個專案編譯生成DLL庫而不生成可執行檔案: 刪除main()函式; 將.pro專案檔案中的TEMPLATE = app改為TEMPLATE = lib。 然後編譯,此時生成的就是.a和.dll的檔案。 在另一個專案中呼叫此DLL: 在專案檔案中新

CommonUtil:常用的工具類eg. 獲取原始檔

/** * 常用的工具類 */ public class CommonUtil { /** * 獲取 string 資原始檔 * @param resId *

C# 讀取原始檔.resx 的xml資源

  主要是以字串的形式來讀取xml,然後通過遍歷讀取節點,通過節點屬性名稱獲取屬性值   /// <summary> /// 初始化OPC引數配置 /// </summary> /// <returns></returns> publi

Android工程依賴:android打包帶有Activity以及原始檔的jar包在工程呼叫

這是因為android的特殊性,android不僅有java檔案還有res檔案,需要研究如何將資源以及activity檔案打包成jar檔案供其他 專案呼叫,最終多方嘗試,找到如下兩種方案。方案二是從android的官方文件中找到的完美解決方案。方案二更優,方案一要求兩個工程包名最好一樣,而 方案二不

獲取原始檔res目錄下的資源時id報空指標

在Android開發過程中,我們經常會有這種需求,需要將自己開發一個類庫打包成jar包以供他人(其他人一般指開發者)呼叫,而不是直接打包apk檔案供終端使用者使用。在打包成jar後,你往往會自己先測試一下看jar包能不能直接使用,這時就會常常有如下的幾個問題: 1) E

c++建立與呼叫dll

好處想必不用說了,所謂的黑盒複用,實現模組化的同時避免原始碼暴露等。可以將某一通用功能做成模組,方便複用,同時軟體更新時如果只更新了幾個模組,可以更換dll即可,無需完整地更新,便於程式拓展。以下教程基於VS2015,其他的版本類似。文章參考連結 1.dll的

C# 任務管理器關閉程序觸發程序的什麽事件?

一句話 什麽 blog 看書 很多 愛的 手臂 出了 實現 <p>  (1)守候 守候,是人生中;的一種美麗等待。 這等待也許是一種幸福!也許是片刻的溫馨! 如果真的要我回報你一世的柔情,我願一生為你默默守候! 誠然,思念著你,卻不能長長久久牽住你的手。我只能這

C#用Tesseract進行OCR識別可識別英日韓所有語言

原始碼下載:https://download.csdn.net/download/horseroll/10739546    原始碼下包含部分語言包,所以檔案比較大 先上效果圖。測試中文英文日語識別,其他語言也都行,只要下載相應的語言包,操作使用後面都有講 1

關於ESAPI獲取原始檔問題

近期專案中需要使用到元件包ESAPI(ESAPI是owasp提供的一套API級別的web應用解決方案),其官方網站為:https://www.owasp.org/, 有興趣的小夥伴可以瞭解一下。此處不是本文重點,本文重點記錄一下使用此元件時遇到的資源載入問題。 引入jar <!

jar包獲取原始檔

背景 寫的一個spring boot專案打成jar包部署執行下,打成jar包,提示找不到資原始檔,如下圖:  直接通過idea是可以執行的,但打成jar包後提示找不到資原始檔,簡單查閱後瞭解到是因為jar包在讀取檔案的方式不一致導致的   問題分析 先定位到哪行程式碼出錯,如

Android Uri獲取原始檔(多種方式)

在Android中少不了去獲取資原始檔,在Android裡封裝了幾種獲取固定Resource檔案的方式,今天不講這個。 如果你要獲取資原始檔夾raw目錄下的視訊檔案,那你會怎麼做?  這時候Uri就排上用場了   我在這先設個疑問,通過Uri去拿raw資料夾下的m

C# 獲取 IP,MAC,計算機名硬碟號等

一、新建C#winform工程computer 二、form窗體程式碼如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.

iOS基礎:獲取原始檔方法

bundle是一個目錄,其中包含了程式會使用到的資源.這些資源包含了如影象,聲音,編譯好的程式碼,nib檔案(使用者也會把bundle稱為plug-in).對應bundle,cocoa提供了類NSB

C#獲取星期幾的函式asp.net獲取星期

using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> ///week 的摘要說明 /// </summary&g

C# 獲取列舉的 鍵名稱值 和描述 遍歷列舉

C# Enum  列舉的操作。  鍵名稱,值 和描述  和 遍歷列舉  /// <summary>      /// 促銷      /// </summary>      public enum cxsd      {          [Des

C#操作dataGridView新增資料庫資料刪除dataGridView的資料

      private void btn_AddData_Click(object sender,EventArgs e)//資料新增        {           //方法一            //stringid = "4";            //stringname = "Jim

java通過JNA呼叫dll JNI的替代者—使用JNA訪問Java外部功能介面

---恢復內容開始--- 1. JNA簡單介紹 先說JNI(Java Native Interface)吧,有過不同語言間通訊經歷的一般都知道,它允許Java程式碼和其他語言(尤其C/C++)寫的程式碼進行互動,只要遵守呼叫約定即可。首先看下JNI呼叫C/C++的過程,注意寫程式時自下而上,呼叫時自上而下

關於Servlet獲取原始檔的路徑問題

以eclipse中的java web專案為例,properties檔案作為資原始檔 有如下結構的專案,在WebContent、WEB-INF及src下分別有db1.properties,db2.properties,db3.properties三個檔案。   在Servlet中使用Serv

自定義工具類-----通過圖片名稱獲取原始檔(運用反射)

一、用kotlin寫的話如下: object ReflectUtil { /** * 獲取圖片名稱獲取圖片的資源id的方法 ,呼叫的時候 * getResourceByReflect("sdf", R.mipmap::class.java) */ fun