2011-10-11 69 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使其可测试,而不是从服务传递具体上下文。 –