C#反射動態調用dll中的方法,並返回結果

來源:互聯網
上載者:User

最近在看工廠開發模式,發現用到了反射,之前只聽說過也沒怎麼用過;所以花了點時間重新溫習了一遍;

反射的作用是動態載入某個dll(程式集),並執行該程式集中的某個方法,並返回結果;當然也可以給該方法傳遞參數

 

namespace assembly_name  {      public class assembly_class      {          public string Show_Str(string str)          {              if (string.IsNullOrEmpty(str))                  return "你沒有傳參數進來";              else                  return "有參數,參數是:" + str;          }      }  }

上邊寫一個測試類別,名稱空間是assembly_name,類名是assembly_class,類名下有個方法Show_Str參數是string類型,並且傳回值是string類型;

在我本地產生了這個類,產生後的dll是App_Code.dll(這個可以根據你的情況來,不完全是App_Code.dll),接著要把這個dll添加引用到你的項目中(重要);

 

 

//載入程式集(dll檔案地址),使用Assembly類   Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "Bin/App_Code.dll");    //擷取類型,參數(名稱空間+類)   Type type = assembly.GetType("assembly_name.assembly_class");    //建立該對象的執行個體,object類型,參數(名稱空間+類)   object instance = assembly.CreateInstance("assembly_name.assembly_class");    //設定Show_Str方法中的參數類型,Type[]類型;如有多個參數可以追加多個   Type[] params_type = new Type[1];  params_type[0] = Type.GetType("System.String");  //設定Show_Str方法中的參數值;如有多個參數可以追加多個   Object[] params_obj = new Object[1];  params_obj[0] = "jiaopeng";    //執行Show_Str方法   object value = type.GetMethod("Show_Str", params_type).Invoke(instance, params_obj);   

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.