新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > .Net开发 > Asp.net教程 > 正文:C#中Plugin的实践

C#中Plugin的实践

新客网 XKER.COM 2004-07-19 来源: 收藏本文
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#可以带参数的实例化方法。
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐