a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

C#使用反射加載多個程序集的實現方法

2020-01-26 14:33:37
字體:
來源:轉載
供稿:網友

當開發插件的時候需要用到反射,在客戶端動態加載遍歷程序集,并調用每個程序集的方法。

創建一個控制臺應用程序,首先設計一個接口:

public interface ISay  {    void SaySth();  } 

在控制臺應用程序下創建Plugins文件夾,控制臺的可執行文件和所有程序集文件都生成在這里。右鍵控制臺項目--"屬性"--"生成",把"輸出路徑"設置成Plugins文件夾。

創建類庫項目Assembly1,添加對控制臺項目的引用,并創建實現ISay接口的類:

namespace Assembly1 {   public class OneSay : ISay   {     public void SaySth()     {       Console.WriteLine("我來自程序集1");     }   } } 

右鍵類庫項目Assembly1--"屬性"--"生成",把"輸出路徑"設置成Plugins文件夾,并生成類庫項目Assembly1。

客戶端需要找到所有程序集中所有實現ISay接口的類。其基本思路是:

→找到Plugins文件夾下所有dll后綴的文件

→遍歷這些文件,根據文件名動態加載程序集

→遍歷程序集中實現ISay接口的類型,并保存到ISay類型的集合中

→客戶端遍歷ISay類型的集合,調用ISay的接口方法

class Program   {     static void Main(string[] args)     {       foreach (var say in GetSpeakers())       {         say.SaySth();       }     }     static List<ISay> GetSpeakers()     {       List<ISay> result = new List<ISay>();       //獲取項目根目錄下的Plugins文件夾       string dir = Directory.GetCurrentDirectory();       //遍歷目標文件夾中包含dll后綴的文件       foreach (var file in Directory.GetFiles(dir + @"/", "*.dll"))       {         //加載程序集         var asm = Assembly.LoadFrom(file);         //遍歷程序集中的類型         foreach (var type in asm.GetTypes())         {           //如果是ISay接口           if (type.GetInterfaces().Contains(typeof (ISay)))           {             //創建接口類型實例             var isay = Activator.CreateInstance(type) as ISay;             if (isay != null)             {               result.Add(isay);             }           }         }       }       return result;     }

1

再創建一個類庫項目Assembly2,添加對控制臺項目的引用,并創建實現ISay接口的類:

namespace Assembly2 {   public class TwoSay : ISay   {     public void SaySth()     {       Console.WriteLine("我來自程序集2");     }   } } 

右鍵類庫項目Assembly2--"屬性"--"生成",把"輸出路徑"設置成Plugins文件夾,并生成類庫項目Assembly2。

再次運行控制臺項目。

2

以上這篇C#使用反射加載多個程序集的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 成人一区二区av | 黄色av网站观看 | 欧美成人黄激情免费视频 | 久久精品无码一区二区日韩av | 国产精品一区亚洲二区日本三区 | 国产伦理一区二区 | 欧美精品一区二区三区蜜桃视频 | 男女靠逼视频 | 二区在线视频 | 国产成人99久久亚洲综合精品 | 国产极品美女高潮无套av个 | 国产91精品一区二区绿帽 | 久久久女女女女999久久 | 久久精品国产免费 | 狠狠骚| 成人一区二区在线 | 欧洲三级在线 | 久久久久久久久久久久影院 | 一级特黄色大片 | 国产区精品| 美女黄色免费网站 | 中文字幕一区二区三区日韩精品 | 日韩欧美在线观看视频 | 国产精品久久久久久久久久 | 中文字幕三区 | 久久99国产一区二区三区 | 精品一区二区三区四区视频 | 亚洲视频一区二区在线 | 欧美亚洲视频 | 国产在视频一区二区三区吞精 | 成人免费网站视频 | 亚洲综合色网 | 欧美一级片在线观看 | 白浆在线播放 | 国产精品96久久久久久久 | 求个黄色网址 | 亚洲一区二区三区四区在线观看 | 成人av国产 | 守护甜心中文版 | 久久久久一区二区三区 | 国产伦精品久久久一区二区三区 |