Настройка репозиториев и провайдеров - PullRequest
0 голосов
/ 11 октября 2011

У меня небольшая проблема, пытаясь понять, как сделать следующее. Приношу свои извинения, если следующее кажется идиотским, просто новичок в 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) { }
  ...
}

Все параметры конфигурации строго типизированы, и до сих пор я звоню установщику для службы настроек, прежде чем я позвоню Установить на остальных.

У меня такой вопрос: нужно ли регистрировать службы и репозитории или что-то пропущено?

Я думаю, мы могли бы разрешить доступ к свойству DbHost из Сервиса, но мне скорее не нравится. У нас также есть поставщики для внешних систем, которые могут нуждаться в некоторой инициализации.

Пока у меня есть что-то вроде этого:

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

Та

1 Ответ

0 голосов
/ 11 октября 2011
   public void Install(IWindsorContainer container, IConfigurationStore store)
   {
       container.Register(Component.For<IUserService>()
                .ImplementedBy<UserService>()
                .LifeStyle.Singleton);
   }

Вы должны зарегистрировать конкретную службу UserService в интерфейсе, чтобы позволить контейнеру определить, какой конкретный файл разрешить.

...