有没有办法在.NET中重新编译时添加引用?

时间:2010-01-13 16:54:07

标签: .net reference inversion-of-control castle-windsor compilation

我正在使用IoC容器(Castle Windsor)来根据配置文件实例化类。如果我想从编译项目时不存在的新dll中添加类,有没有办法在不重新编译的情况下执行此操作?

编辑:由于此项目是WCF服务的服务主机,并且我想在编译后包含的类是WCF服务,我还想知道是否可以包含有关新的端点信息没有重新编译的服务。

2 个答案:

答案 0 :(得分:6)

我特别不了解温莎,但我希望它是可能的 - 只需指定完整的类型名称,包括程序集名称:

<component id="foo"
           service="Namespace.IInterfaceName, InterfaceAssembly"
           type="Namespace.ImplementationName, ImplementationAssembly" />

答案 1 :(得分:1)

是的 - 这正是Castle Windsor的用途。我在家里的一个项目中使用Castle,我用它来动态加载程序集中的类,这些程序组在创建类时可能不存在。

诀窍是你加载的类必须实现应用程序已知的接口。

这样做的目的是让您可以根据需要切换进出不同的功能。您的项目使用ISaveMyData来保存内容并使用Castle Windsor使用Oracle或MySql,具体取决于客户端站点上安装的内容。

对于WCF,WCF组件必须指定他们正在使用的接口(他们的合同)。在WCF组件的常规配置中,只要需要使用相同的合同,您就可以在需要时更改端点地址和其他信息以指向不同的组件。不需要温莎城堡。也不需要重新编译 - 只需进行配置更改即可。