WEB开发网
开发学院WEB开发ASP.NET 闲谈可插拔式应用程序的开发 阅读

闲谈可插拔式应用程序的开发

 2010-10-09 08:16:14 来源:WEB开发网   
核心提示: 插件的目录如下图:查看原图(大图)运行效果:查看原图(大图)扩展性和兼容性:如果我想在主应用程序中添加一个ShowMessageBox方法,而且这个方法供插件调用,闲谈可插拔式应用程序的开发(4),考虑到版本的兼容性,公开的接口是不能修改的,文章的后面提供了插件和应用程序之间版本兼容的一种方案,

插件的目录如下图:

闲谈可插拔式应用程序的开发

查看原图(大图)

运行效果:

闲谈可插拔式应用程序的开发

查看原图(大图)

扩展性和兼容性:

如果我想在主应用程序中添加一个ShowMessageBox方法。而且这个方法供插件调用。考虑到版本的兼容性,公开的接口是不能修改的。比如:将主应用程序的接口修改成:

public interface IPluginHost 
{ 
  void AddMenuItem(string name, MenuItemClickedHandler clickHandler); 
  void RegisterComponent<T>(T component) where T : class; 
  T GetComponent<T>() where T : class; 
  void MailNotice(string messaage); 
  void ShowMessageBox(string message); 
} 

那么如何实现呢,很简单,使用依赖注入的方式。添加下面接口:

public interface IMessageBoxHost 
{ 
  void ShowMessageBox(string message); 
} 

通过主应用程序的构造函数,将MessageBoxHost对下岗注入到主应用程序,在通过插件的构造函数,将其注入插件之中。

主应用程序的构造函数:

public Program(IMessageBoxHost messageBoxHostInstance) 
{ 
  this.messageBoxHostInstance = messageBoxHostInstance; 
} 

插件构造函数:

public PluginA(IMessageBoxHost messageBoxHost) 
{ 
  this.messageBoxHost = messageBoxHost; 
} 

修改实例化插件的代码:

IPlugin plugin = (IPlugin)Activator.CreateInstance(pluginType, new object[] { messageBoxHostInstance }); 

这样我们对版本兼容有了保障。

总结:本文闲谈了可插拔应用程序的开发原理,文章的后面提供了插件和应用程序之间版本兼容的一种方案。有讨论才有进步,欢迎各位留言。

参考代码:http://files.cnblogs.com/zhuqil/Plugin.rar

作者:朱祁林

出处:http://zhuqil.cnblogs.com 

上一页  1 2 3 4 

Tags:闲谈 应用程序 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接