国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

利用C# 反射設計支持可擴展插件的應用程序

2019-11-17 02:59:39
字體:
來源:轉載
供稿:網友

利用C# 反射設計支持可擴展插件的應用程序

 

1.設計接口類:

public interface IBase{     void Somefun();}

2.設計擴展插件類:

class PluginCls:IBase{     public void Somefun()     {         Console.WriteLine("hello ,i am derived class");      }}

3.主程序設計:

class PRogram{      static void Main(string[] args)      {          Assembly asm = Assembly.LoadFile(@"..../PluginCls.dll");          Type[] clsTypes = asm.GetTypes();//可訪問程序集所有定義的類型          //Type[] clsTypes = asm.GetExportedTypes();//這個方法只能訪問程序集公開定義的類型          foreach (Type e in clsTypes)          {            if (e.IsClass && typeof(IBase).IsAssignableFrom(e))//兼容匹配             {               IBase mth = (IBase)Activator.CreateInstance(e);//類實例構造               mth.Somefun();//調用插件類的實現方法             }          }          Console.ReadKey();        }    }

程序輸出:

image

 

這樣主應用程序可以加載由其他人員設計的插件,無需關心該插件所定義的新類型,只要插件按照給定的接口原則設計,

主程序則可無縫加載。

 

參考:《CLR via C#》第22章,第23章

jeffrey大牛實現太屌了,寫的書本本經典,墻裂推薦他的書!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 读书| 乌兰察布市| 涿州市| 仁布县| 惠水县| 灵宝市| 汝阳县| 威宁| 金门县| 平顺县| 望都县| 新建县| 安丘市| 呼和浩特市| 柞水县| 天津市| 同江市| 通辽市| 双鸭山市| 富裕县| 镇安县| 监利县| 武定县| 讷河市| 尚义县| 灵丘县| 和政县| 丰原市| 高淳县| 铅山县| 丰都县| 江北区| 平舆县| 庆云县| 桂东县| 卓资县| 城口县| 浪卡子县| 清丰县| 邛崃市| 中山市|