我将从一个与加载app.config中指定的插件实例相关的previous question继续。
我很好奇是否有可能添加一个插件,而不需要在我的项目中添加引用,如果是的话,我该怎么做呢?
<configuration>
<appSettings>
<add key="Plugin" value="Prototypes.BensPlugin, PrototypePlugins" />
</appSettings>
</configuration>所以现在我想用以下命令加载我的插件:
string tn = /* Retrieve from config */
Type t = Type.GetType(tn);
IPlugin plugin = (IPlugin)Activator.CreateInstance(t);考虑到插件的性质,我认为我的程序集不应该需要引用它。似乎Type.GetType()要求插件程序集在引用列表中(或者GAC?)这让我相信这不是插入特性的正确方法。
这是可能的,还是我看错了方向?
发布于 2009-11-07 00:24:55
基本上,添加这行代码
System.Reflection.Assembly.Load("PrototypePlugins");如果PrototypePlugins.dll与当前正在执行的程序在同一目录中,则Type.GetType(tn);将执行该工作。但是,请注意,您无法卸载该程序集。
一种更好的方法是将该程序集加载到另一个AppDomain中,这样您就可以通过终止AppDomain来卸载它。但是这不是微不足道的,所以我建议您使用如下所示的IoC容器:http://www.castleproject.org/container/
马尼特拉。
https://stackoverflow.com/questions/1688603
复制相似问题