我正在使用Castle Windsor作为我的DI容器。我注册了一个指定名称的服务:
container.Register(Component.For<MyService>().Named("MyService"));
问题在于我系统中有很多服务,而我已经厌倦了每一个都进行注册。如何通过约定方式来处理而不失去“Named”部分?(我不介意使用与类相同的名称调用我的服务)
我正在使用Castle Windsor作为我的DI容器。我注册了一个指定名称的服务:
container.Register(Component.For<MyService>().Named("MyService"));
WindsorContainer container = new WindsorContainer();
container.Register(Classes.FromThisAssembly()
.BasedOn<IService>()
.Configure(c => c.Named(c.Implementation.Name)));
以下是一个示例:
public interface IService { }
public class Service1 : IService { }
public class Service2 : IService { }
public class Service3 : IService { }
public class Service4 : IService { }
public class Service5 : IService { }
public class Service6 : IService { }
输出如下:
还有其他选择注册类的方式。请参见文档了解更多信息。