StructureMap - 配置插件的默认类型,但是可以覆盖吗?

时间:2011-03-30 13:51:29

标签: configuration structuremap

我有一个要求,我希望将接口的插件配置为永远是默认类型,但允许另一个程序集的同一个插件的配置始终优先。

所以说我有MyAssembly.dll,它有一个注册表来设置它: For<IBar>().Use<BarImpl>();

如果特定客户端需要不同的功能,我想将MyAssembly.CustomerA.dll放入应用程序的bin文件夹中。它的注册表类似: For<IBar>().Use<CustomerABarImpl>();

MyAssembly.CustomerA.dll中的配置应始终覆盖配置。

我已经读过配置文件可以做到这一点,但这似乎意味着我需要设置应用程序应该使用哪个配置文件。如果可以,我宁可不要; MyAssembly.CustomerA.dll的存在应该足够了。

现在,这个问题类似:Using StructureMap, when a default concrete type is defined in one registry, can it be redefined in another registry?

但我不想把它留给“最后一个StructureMap找到的东西。”

可以这样做吗?

2 个答案:

答案 0 :(得分:0)

配置文件有点混乱,我不相信它们会适应这种情况。听起来你想要一个方法,说“除非注册任何其他具体类型,否则使用默认值”。

我不知道如何做到这一点,但您可以确保最后注册覆盖类型。我必须看到你的配置给出一个确切的图片,但想法是调用Initialize并设置除客户特定的东西之外的所有东西。然后调用Configure并扫描其他程序集。这样,除非您在单独的程序集中为该接口添加了另一个实现,否则所有基类型都将是默认的。

答案 1 :(得分:0)

在扫描注册表之前注册默认实例。

相关问题