科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C#中Plugin的实践

C#中Plugin的实践

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Plugin是一种相当灵活的可扩充、模块化机制,微软的Application Block不少采用了Plugin结构,本文讨论Plugin在C#中的一种实践。

作者:小鸡射手 来源:soft6 2008年5月16日

关键字: 实践 Plugin C# Windows

  • 评论
  • 分享微博
  • 分享邮件
 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#可以带参数的实例化方法。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章