2011-03-30 43 views
0

我有一个要求,我希望为接口配置一个插件,使其始终为默认类型,但允许其他程序集对该插件的配置始终优先。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发现最后一次。”

可以这样做吗?

回答

0

简介有点令人困惑,我不相信他们会为这种情况很好地工作。这听起来像你想要一个方法,说“使用这个默认,除非任何其他具体类型注册。”

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

+0

这是我相信做到这一点的唯一方法;您需要定义一些方法来从初始扫描中排除插件程序集,然后在'Initialize'之后显式'配置'插件程序集。它的耻辱没有任何内置来处理这个问题。 – Andy 2012-08-13 11:52:51

0

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

相关问题