.Net运行时程序集绑定

时间:2011-09-28 05:19:39

标签: .net binding assemblies inversion-of-control

我有一个相当不寻常的问题,需要一些想法。

我维护了两个99%相同的代码库。一个新项目已经出现,在某些运行时条件下需要使用代码库A,在其他条件下使用预编译的代码库B.

我已将功能抽象为项目的接口,并计划有两个引用不同代码库的实现程序集。我计划使用服务定位器模式来实例化对象。所以它看起来有点像这样。

Assembly A (Website)              Assembly B           Libraries
-------------------------------|--------------------|-------------
    Project -> Service Locator -> Implementation A -> Code Base A
                               -> Implementation B -> Code Base B

我担心的是加载代码库a和b的相同命名程序集并且存在运行时冲突。

这种情况的最佳方法是什么?为什么?

1 个答案:

答案 0 :(得分:2)

听起来,如果你给每个集会一个不同的名字,它将有效地解决问题。即使每个程序集中的代码库几乎相同,assemblies are identified by name (and other characteristics),因此以不同方式命名它们将确保它们不会发生冲突。每个程序集中的类型(类等)都使用the assembly name to build their fully qualified names,所以你不应该有任何冲突。

但是,必须在第三个库(可能是您正在使用的库)中定义隐藏程序集类型的接口。