У меня есть интерфейс, называемый IRepository, с двумя реализациями:
SqlRepository
SqlDualWriterRepository
Первая реализация - это обычная реализация персистентности SQL для объектов типа T. Она зависит от экземпляра SqlConnectionStringProvider (который предоставляет строку подключения, как следует из названия, и принимает в качестве параметра конструктора имя строки подключения).
Вторая - это другая реализация, которая использует внутренне две зависимости SQLRepository:
public class SqlDualWriterRepository<T> : IRepository<T>
{
private readonly IRepository<T> _primaryRepository;
private readonly IRepository<T> _secondaryRepository;
public SqlDualWriterRepository(
IRepository<T> primaryRepository,
IRepository<T> secondaryRepository)
{
_primaryRepository = primaryRepository;
_secondaryRepository = secondaryRepository;
}
}
Чего я хочу добиться, так это настроить StructureMap так, чтобы при запросе экземпляра IRepository,он будет:
- разрешить IRepository для экземпляра SqlDualWriterRepository
- разрешить два внутренних хранилища для типа SqlRepository
- для двух объектов SqlRepository, созданных на шаге 2, которые мне нужныразрешить SqlConnectionStringProvider другим способом (провопределение различных строковых параметров в конструкторе)
Я понятия не имею, как этого добиться.Есть ли способ сделать это с помощью атрибутов или других типов конфигурации?
Я использую StructureMap 2.6.2.0.