首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建在App.Config中定义的对象的实例,而不引用项目中的程序集?

如何创建在App.Config中定义的对象的实例,而不引用项目中的程序集?
EN

Stack Overflow用户
提问于 2009-11-07 00:15:15
回答 2查看 1.1K关注 0票数 1

我将从一个与加载app.config中指定的插件实例相关的previous question继续。

我很好奇是否有可能添加一个插件,而不需要在我的项目中添加引用,如果是的话,我该怎么做呢?

代码语言:javascript
运行
复制
<configuration>
  <appSettings>
    <add key="Plugin" value="Prototypes.BensPlugin, PrototypePlugins" />
  </appSettings>
</configuration>

所以现在我想用以下命令加载我的插件:

代码语言:javascript
运行
复制
string tn = /* Retrieve from config */
Type t = Type.GetType(tn);
IPlugin plugin = (IPlugin)Activator.CreateInstance(t);

考虑到插件的性质,我认为我的程序集不应该需要引用它。似乎Type.GetType()要求插件程序集在引用列表中(或者GAC?)这让我相信这不是插入特性的正确方法。

这是可能的,还是我看错了方向?

EN

Stack Overflow用户

回答已采纳

发布于 2009-11-07 00:24:55

基本上,添加这行代码

代码语言:javascript
运行
复制
System.Reflection.Assembly.Load("PrototypePlugins");

如果PrototypePlugins.dll与当前正在执行的程序在同一目录中,则Type.GetType(tn);将执行该工作。但是,请注意,您无法卸载该程序集。

一种更好的方法是将该程序集加载到另一个AppDomain中,这样您就可以通过终止AppDomain来卸载它。但是这不是微不足道的,所以我建议您使用如下所示的IoC容器:http://www.castleproject.org/container/

马尼特拉。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1688603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档