2017-09-04 100 views
1

我使用溫莎城堡作爲我的DI容器。我註冊了我的服務指定一個名稱:溫莎城堡:按照公約註冊並命名部分

container.Register(Component.For<MyService>().Named("MyService")); 

的問題是,我在我的系統有很多的服務,我已經厭倦了寄存器的他們中的每一個。我怎麼能按照慣例做到這一點,而不會失去Named部分? (我不介意使用相同的名稱作爲類調用我的服務)

回答

4

您可以使用下面的註冊從一些基本的/接口派生的所有服務,然後配置他們的名字:

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 { } 

輸出是:

enter image description here


還有其他方法可以選擇註冊哪些類。查看更多in documentation

+1

@eitanby - 這是否幫助您解決問題? –

+0

哦,是的!非常感謝,這正是我所需要的。 – eitanby

+0

@eitanby - 很高興能聽到:)很高興幫助 –