[.NET] 如何使用app config来动态变更载入的DLL(plug-in)
来源:互联网 发布:浅陌网络收徒 编辑:程序博客网 时间:2024/06/11 08:33
在本篇文章中,会示范如何在.NET中配合App config中的设定,来决定程序所要载入的dll及class
这种实作技巧,在plug-in中算是蛮常见的用法
首先,要宣告一个interface,就如下叫做Orz吧
并且将Orz放到一个独立的DLL项目中,并编译该DLL
public interface Orz{ int ID { get; set; } void Test();}
再来建立一个Client的EXE档项目,我是使用Console项目,并放入下面代码
class Program{ static void Main(string[] args) { Console.WriteLine("============ Test interface Orz from config ============"); string DllName = ConfigurationSettings.AppSettings["DllName"]; string ClassName = ConfigurationSettings.AppSettings["ClassName"]; try { Orz orz = Assembly.Load(DllName).CreateInstance(ClassName) as Orz; orz.ID = 999; orz.Test(); }catch(Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); }}
App.config
<?xml version="1.0" encoding="utf-8" ?><configuration> <appSettings> <!-- you can test config 1 or 2 to test runtime change dll --> <!-- config 1--> <!-- modify MyImplement.XD2 to test --> <add key="DllName" value="MyImplement" /> <add key="ClassName" value="MyImplement.XD2" /> <!-- config 2--> <!-- modify MyImplement2.Ghost to test --> <!-- <add key="DllName" value="MyImplement2" /> <add key="ClassName" value="MyImplement2.Ghost" /> --> </appSettings></configuration>
此时若执行起来,会出现
因为我在项目中并没有加上任何实作的参考.......
接下来加上两个dll项目,并且实践MyInterface中的Orz介面
public abstract class XD : Orz{ protected int id; #region Orz Members public virtual void Test() { Console.WriteLine("Do XD.Test(), ID[" + id + "]"); } #endregion #region Orz Members int Orz.ID { get { return id; } set { id = value; } } #endregion}
public class Ghost : Orz{ protected int id; protected string name; public Ghost() { name = "ghost"; } #region Orz Members public int ID { get { return id; } set { id = value + 100; } } public virtual void Test() { Console.WriteLine("Do Ghost.Test(), ID[" + id + "], Name[" + name + "]"); } #endregion}
然后编译整个项目,接下来将dll及exe及app.config复制到同一个文件夹中
接下来就可以修改app.config中的设定
plug-in不同的dll来执行了
范例下载
- [.NET] 如何使用app config来动态变更载入的DLL(plug-in)
- 我是如何动态编辑App.config的!
- 我是如何动态编辑App.config的!
- 我是如何动态编辑App.config的
- 如何使用Loader来动态载入一个基于item的Component
- 关于struts-config.xml中“plug-in”元素的问题
- 如何动态修改winform的app.config的键值
- jQuery UI Layout Plug-in 的使用
- .NET开发使用Winform的配置文件App.config
- .net类库获取当前类库的配置(dll的app.config读写)
- .net类库获取当前类库的配置(dll的app.config读写)
- vb.net 通过app.config来改变编译路径的问题
- 如何制作和使用QML extension plug in
- DELPHI中动态调用DLL的载入片断代码
- ASP.NET中如何动态载入css样式表
- Task Plug-in: A Flexible .NET Plug-in Architecture
- 搭建SSH框架的时候的struts-config.xml配置文件(用plug-in管理)
- 动态载入动态库(dll)
- 如何定时在不同的电脑上两步文件夹
- Problem58
- update和saveOrUpdate
- Linux私房菜压缩指令与正规表示法 课后练习第十一章
- Extending WCF(四)—一个统一处理异常、日志的解决方案
- [.NET] 如何使用app config来动态变更载入的DLL(plug-in)
- Flex实现图片展播+渐出特效
- 物料表, Truncate 表,插入数据 存储过程
- 把一个bmp转换成cur显示出来(掩码mask)
- vc6.0下live555编译失败的原因
- 输出Helloworld 没有main方法
- vs2010打包 sql server 2005 express的问题
- 利用Nginx架设Http代理服务器
- 浅谈百度蜘蛛的爬行