Dependency injection 在具有多个不同配置的企业解决方案中使用依赖项注入容器

Dependency injection 在具有多个不同配置的企业解决方案中使用依赖项注入容器,dependency-injection,castle-windsor,Dependency Injection,Castle Windsor,有谁能告诉我一些好的文档/代码示例,在需要不同配置集的场景中,如何最好地管理DI容器的配置 我们有一个分层的分布式应用程序,它有多个入口点(即:网站、winforms应用程序、office插件等)。根据您使用解决方案的方式(例如,通过UI和自动化工作流),需要对其进行稍微不同的配置 我们正在使用Windsor,它具有流畅的配置功能。每个应用程序都应该有一个容器,因此在该级别上,您必须为每个应用程序分别配置每个容器 然而,为一系列应用程序提供一个公共的基本配置是一个正常的需求,大多数DI容器通过提

有谁能告诉我一些好的文档/代码示例,在需要不同配置集的场景中,如何最好地管理DI容器的配置

我们有一个分层的分布式应用程序,它有多个入口点(即:网站、winforms应用程序、office插件等)。根据您使用解决方案的方式(例如,通过UI和自动化工作流),需要对其进行稍微不同的配置


我们正在使用Windsor,它具有流畅的配置功能。

每个应用程序都应该有一个容器,因此在该级别上,您必须为每个应用程序分别配置每个容器

然而,为一系列应用程序提供一个公共的基本配置是一个正常的需求,大多数DI容器通过提供一种打包配置的方式来支持这一需求

在Castle Windsor中,您可以通过定义一个或多个实现接口的类来实现这一点

例如:

public class MyWindsorInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.AddComponent<IFoo, Foo>();
        // etc.
    }
}
公共类MyWindsorInstaller:IWindsorInstaller
{
public void安装(IWindsorContainer、IConfigurationStore)
{
container.AddComponent();
//等等。
}
}

每个应用程序应该有一个容器,因此在这个级别上,您必须分别为每个应用程序配置每个容器

然而,为一系列应用程序提供一个公共的基本配置是一个正常的需求,大多数DI容器通过提供一种打包配置的方式来支持这一需求

在Castle Windsor中,您可以通过定义一个或多个实现接口的类来实现这一点

例如:

public class MyWindsorInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.AddComponent<IFoo, Foo>();
        // etc.
    }
}
公共类MyWindsorInstaller:IWindsorInstaller
{
public void安装(IWindsorContainer、IConfigurationStore)
{
container.AddComponent();
//等等。
}
}

我们使用XML配置文件支持“多配置”情况。如果您准备放弃fluent配置,那么XML配置文件集的管理和部署非常简单。

我们使用XML配置文件支持“多配置”情况。如果您已经准备好放弃流畅的配置,那么XML配置文件集的管理和部署将非常简单。

目前为止,我们最有希望的解决方案似乎是将iIndorInstaller的使用与MEF结合起来->目前为止,我们最有希望的解决方案似乎是将iIndorInstaller的使用与MEF结合起来->