.net - Microsoft Unity 中的转发类型

标签 .net castle-windsor unity-container

如何在Unity框架中使用单个组件提供多个服务?

在 Windsor 中,它的配置方式如下:

var container = new WindsorContainer();
container.Register(Component.For<Service1, Service2>()
                            .ImplementedBy<Component>());

var service1 = container.Resolve<Service1>();
var service2 = container.Resolve<Service2>();

转发类型的想法是,如果组件是单例,service1service2 是同一个实例

最佳答案

此测试通过:

[Fact]
public void ContainerCorrectlyForwards()
{
    var container = new UnityContainer();
    container.RegisterType<IService1, MyComponent>(
        new ContainerControlledLifetimeManager());
    container.RegisterType<IService2, MyComponent>(
        new ContainerControlledLifetimeManager());

    var service1 = container.Resolve<IService1>();
    var service2 = container.Resolve<IService2>();

    Assert.Same(service1, service2);
}

关于.net - Microsoft Unity 中的转发类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3758985/

相关文章:

inversion-of-control - 如何使用 Microsoft Unity IOC 容器注入(inject) IEnumerable

c# - 在代码中绑定(bind)到 DependencyProperty

c++ - 如何计算 C++ Visual Studio 中两个日期之间的天数?

.net - 在未安装MS Word的情况下打印OOXML文档

c# - 当依赖项无法实例化时如何调试?

wpf - PRISM 模块注册

c# - 如何在没有互操作程序集的情况下将任何文件类型嵌入到 Microsoft Word 中

c# - CaSTLe Windsor 3.1 缺少方法异常

caSTLe-windsor - 在为下游依赖项提供值的同时解决依赖项

c# - 如何注入(inject)在 Windsor 中注册的 MEF [ImportingConstructor] 依赖项?