注册
 找回密码
 注册
江西广告网
查看: 294|回复: 0
打印 上一主题 下一主题

Plugin在C#中的一种实践源代码分析

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2008-12-24 11:59:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  Plugin是一种相当灵活的可扩充、模块化机制,微软的Application Block不少采用了Plugin结构,本文讨论Plugin在C#中的一种实践。       Plugin是基于统一的接口,在C#中采用Reflection机制产生实现IPlugin的对象。假定接口为IPlugin,以下代码块示意动态产生IPlugin对象的代码段,其中dllName是实现IPlugin接口类的dll文件名:       public IPlugin LoadPlugin(string dllName)       {        Assembly asm = AppDomain.CurrentDomain.Load(dllName);        foreach(Type t in asm.GetTypes()) {          foreach(Type iface in t.GetInterfaces()) {            if(iface.Equals(typeof(IPlugin))) {               return (System.Activator.CreateInstance(t)) as IPlugin;             }          }         }        return null;       }   Java也有Reflection机制,实现Plugin也很简单,大致是(IPlugin)Class.forName(className).newInstance()的样子。C 由于Reflection机制,可以采用DLL模拟,在DLL中export一个全局函数和interface,该全局函数返回实现了接口的对象的指针。   微软有关于Provider Pattern的文章,文中提供了另一种C#可以带参数的实例化方法。 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表