2011-10-11 104 views
0

我試圖弄清楚如何執行以下操作,但有點問題。我很抱歉,如果以下看起來很愚蠢,對Castle.Windsor來說只是新的。設置儲存庫和提供商

對,在我的應用程序庫中應該指向不同的dbs。它們都共享一個抽象類(Db方法抽象),但它們之間沒有關聯。 所以我有這樣的事情:

public class UserService : IUserService 
{ 
    private readonly IUserRepository _repository; 
    public UserService(IUserRepository repository) { _repository = repository; } 
    ... 
} 

public class UserRepository : Mongo, IUserRepository 
{ 
    public UserRepository(DatabaseHosts.Users UsersHost) : base(UsersHost) { } 
    ... 
} 

所有的配置設置是強類型的,到目前爲止,我呼籲設置服務安裝之前,我叫上安裝的其餘部分。

我的問題是:我是否需要註冊服務和Respositories,或者有什麼遺失的東西?

我想,我們可以允許從服務訪問DbHost屬性,但我寧願不。 我們也有供應商可能需要某種初始化的外部系統。

到目前爲止,我已經soemthing這樣的:

public class ServicesInstaller : IWindsorInstaller 
{ 
    public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     container.Register(Component.For<IUserService>() 
       .ImplementedBy<IUserService>() 
       .LifeStyle.Singleton); 
    } 
} 

回答

0
public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     container.Register(Component.For<IUserService>() 
       .ImplementedBy<UserService>() 
       .LifeStyle.Singleton); 
    } 

,你必須註冊具體的服務「UserService」的接口,以便允許容器以確定哪些具體解決。

+0

這就是我到目前爲止,問題是我註冊我的倉庫在安裝程序中,或者我將DbHost屬性從服務傳遞到存儲庫。請記住,我不使用上下文或UnitOfWork或類似的。所以本質上我需要用合適的字符串來初始化存儲庫。 – ErMasca

+0

最好註冊它並使用DI使其可測試,而不是從服務傳遞具體上下文。 –