如何在Unity框架中使用单个组件提供多个服务?
在 Windsor 中,它的配置方式如下:
var container = new WindsorContainer();
container.Register(Component.For<Service1, Service2>()
.ImplementedBy<Component>());
var service1 = container.Resolve<Service1>();
var service2 = container.Resolve<Service2>();
转发类型的想法是,如果组件是单例,service1
和 service2
是同一个实例。
最佳答案
此测试通过:
[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/