博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插件机制
阅读量:4704 次
发布时间:2019-06-10

本文共 2518 字,大约阅读时间需要 8 分钟。

1  #region 插件机制 2         //  宿主(host):程序寄宿或挂载对象 3         //  有了宿主就可以定义插件(plug-in):符合指定宿主某种接口,并能够提供特定功能的程序 4  5         //  插件架构(插件机制):它降低了宿主与具体的应用模块的依赖,宿主不关心每一个具体的插件如何实现, 6         //  只要该插件满足宿主的规范,那么宿主就能够加载它。 7         //  作为插件,只要满足了宿主的规范便可以被宿主加载 8  9         // 使用插件架构时一般都会使用到 反射(reflector)10 11         //  规范 在实际编码中体现为 Interface 或者 abstract class12 13         //  1.定义一个接口14         /// 15         /// 插件应遵循的接口16         /// 17         public interface IPlugIn{18             void Show();19         }20 21         //  2.定义一个插件,需要实现上述接口22         /// 23         /// 具体插件24         /// 25         public class MyPlugIn : IPlugIn26         {27             //  IPlugIn 成员28             public void Show()29             {30                 Console.WriteLine("this is my plugin");31             }32         }33 34         //  定义一个 宿主 ,并利用 反射 创建具体插件的实例35         public class PlugInHost36         {37             /// 38             /// 加载所有的插件39             /// 40             /// 
41 public List
LoadPlugIns()42 {43 List
plugList = new List
();44 Assembly pluginAssembly = null;45 string path = System.IO.Directory.GetCurrentDirectory() + "/plugins/MyPlugin.dll";46 try47 {48 // 加载程序集49 pluginAssembly = Assembly.LoadFile(path);50 }51 catch (Exception ex)52 {53 54 Console.WriteLine(ex.Message);55 return plugList;56 }57 58 Type[] types = pluginAssembly.GetTypes();59 foreach (Type type in types)60 {61 if (type.GetInterface("IPlugIn") != null)62 {63 // 创建插件的实例64 plugList.Add((IPlugIn)Activator.CreateInstance(type));65 }66 }67 68 return plugList;69 }70 }71 72 // 定义完了插件,扩展规则,宿主之后调用73 static void Main(string[] args)74 {75 PlugInHost host = new PlugInHost();76 var plugins = host.LoadPlugIns();77 foreach (var plugin in plugins)78 {79 plugin.Show();80 }81 82 Console.Read();83 }84 85 #endregion

 

转载于:https://www.cnblogs.com/huangzewei/p/9406055.html

你可能感兴趣的文章
移动端提升页面速度与网站性能
查看>>
中国剩余定理学习笔记
查看>>
深度学习中优化【Normalization】
查看>>
POJ2309BST(树状数组)
查看>>
洛谷P2114 起床困难综合症【位运算】【贪心】
查看>>
Ubuntu+caffe训练cifar-10数据集
查看>>
net 把指定 URI 的资源下载到本地
查看>>
js中 $ 未定义 或者 “xxx”未定义
查看>>
Sublime3插件安装
查看>>
[转]大型网站系统架构的演化
查看>>
非常好的JSUI
查看>>
基于EasyNVR摄像机无插件直播流媒体服务器实现类似于单点登录功能的免登录直播功能...
查看>>
python学习0day
查看>>
课堂练习之检测水军
查看>>
函数指针的使用
查看>>
位图数据结构的操作
查看>>
azkaban用户管理及权限配置
查看>>
GCD学习笔记
查看>>
PHP......会话控制SESSION与COOKIE
查看>>
[转]AchartEngineActivity引擎绘制柱状图、曲线图
查看>>