Castle Windsor 不允许包含重复实现类型的注册。它允许类型转发,这意味着您可以将实现类型映射到多个服务类型,只要您注册一次即可。
ASP.NET vNext 的依赖注入库需要为多个服务类型注册相同的实现类型。但是,这些服务类型也有不同的生命周期,如此处所示。
public static IEnumerable<IServiceDescriptor> DefaultServices()
{
var describer = new ServiceDescriber();
yield return describer.Transient<IFakeService, FakeService>();
yield return describer.Scoped<IFakeScopedService, FakeService>();
yield return describer.Singleton<IFakeSingletonService, FakeService>();
yield return describer.Transient<IFakeFallbackService, FakeService>();
}
这是Forward方法签名:
public ComponentRegistration<TService> Forward(params Type[] types)
如您所见,它不接受生命周期参数。Ninject 测试套件正在通过。温莎城堡也可以支持吗?