Configuration StructureMap-为插件配置默认类型,但是否可以覆盖?

Configuration StructureMap-为插件配置默认类型,但是否可以覆盖?,configuration,structuremap,Configuration,Structuremap,我有一个要求,我想为一个接口配置一个插件,使其始终为默认类型,但允许另一个程序集对该插件的配置始终优先 假设我有MyAssembly.dll,它有一个注册表来设置: 用于。使用 如果某个特定的客户端需要不同的功能,我想将MyAssembly.CustomerA.dll放到应用程序的bin文件夹中。其登记处将类似于: 用于。使用 MyAssembly.CustomerA.dll中的配置应始终覆盖该配置 我已经读到配置文件可以做到这一点,但这似乎意味着我需要设置应用程序应该使用的配置文件。如果可以,

我有一个要求,我想为一个接口配置一个插件,使其始终为默认类型,但允许另一个程序集对该插件的配置始终优先

假设我有MyAssembly.dll,它有一个注册表来设置: 用于。使用

如果某个特定的客户端需要不同的功能,我想将MyAssembly.CustomerA.dll放到应用程序的bin文件夹中。其登记处将类似于: 用于。使用

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

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

现在,这个问题是类似的:

但我不想把它留给StructureMap最后找到的任何东西


这可以做到吗?

配置文件有点让人困惑,我不相信它们能很好地解决这种情况。听起来您希望有一个方法说,除非注册了任何其他具体类型,否则使用默认值


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

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

我认为这几乎是唯一的方法;您需要定义某种方法从初始扫描中排除插件程序集,然后在初始化后显式配置插件程序集。遗憾的是,没有任何内在因素来处理这个问题。