Domain driven design 设置存储库和提供程序

Domain driven design 设置存储库和提供程序,domain-driven-design,castle-windsor,Domain Driven Design,Castle Windsor,我有一个小问题,试图找出如何做到以下几点。我很抱歉,如果以下内容看起来很愚蠢,只是温莎城堡的新手 对,在我的应用程序中,存储库应该指向不同的数据库。它们都共享一个抽象类(Db-methods-abstraction),但它们之间没有相关性。 所以我有这样的想法: public class UserService : IUserService { private readonly IUserRepository _repository; public UserService(IUser

我有一个小问题,试图找出如何做到以下几点。我很抱歉,如果以下内容看起来很愚蠢,只是温莎城堡的新手

对,在我的应用程序中,存储库应该指向不同的数据库。它们都共享一个抽象类(Db-methods-abstraction),但它们之间没有相关性。 所以我有这样的想法:

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) { }
  ...
}
所有配置设置都是强类型的,到目前为止,我先调用设置服务的安装程序,然后再调用其余的安装程序

我的问题是:我是否必须注册服务和职责,或者我遗漏了什么

我认为,我们可以允许从服务访问DbHost属性,但我不希望这样。 我们还有外部系统的提供者,可能需要某种初始化

到目前为止,我有过这样的经历:

public class ServicesInstaller : IWindsorInstaller
{
   public void Install(IWindsorContainer container, IConfigurationStore store)
   {
       container.Register(Component.For<IUserService>()
                .ImplementedBy<IUserService>()
                .LifeStyle.Singleton);
   }
}
公共类服务安装程序:IWindsorInstaller
{
public void安装(IWindsorContainer、IConfigurationStore)
{
container.Register(Component.For())
.由()实施
(1,生活方式,单身人士),;
}
}
Ta

公共void安装(IWindsorContainer、iConfiguration存储)
{
container.Register(Component.For())
.由()实施
(1,生活方式,单身人士),;
}

您必须将具体服务“UserService”注册到接口中,以便容器确定要解析的具体内容。

这就是我目前的情况,问题是我是在安装程序中注册存储库,还是将DbHost属性从服务传递到存储库。请记住,我不使用上下文、工作单元或类似内容。因此,本质上我需要使用适当的字符串初始化存储库,最好注册它并使用DI使其可测试,而不是从服务传递具体的上下文。
   public void Install(IWindsorContainer container, IConfigurationStore store)
   {
       container.Register(Component.For<IUserService>()
                .ImplementedBy<UserService>()
                .LifeStyle.Singleton);
   }