У меня есть класс Service
, который подключается к базе данных и извлекает данные. Новое требование заключается в том, что я подключаюсь ко второй (или N) базе данных с той же схемой и вытаскиваю данные таким же образом. (Каждая БД имеет разные записи, настраиваясь на региональном уровне).Замок Виндзор: для N строк зарегистрируйте N экземпляров класса и передайте строки [n] на ctor
Я хотел бы повторно использовать класс Service
и просто передать строку подключения к сервису. (Строка подключения в настоящее время находится в App.config
).
Итак, я хотел бы зарегистрировать экземпляр моего класса обслуживания для каждой базы данных, к которой я хотел бы подключиться, передав строку соединения конструктору.
Возможно ли это в замке Виндзор?
Мой лучший вариант прямо сейчас:
public class ServiceInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
foreach (var connection in Properties.Settings.Default.ServicedDBs)
{
container.Register(
Component.For<IService>()
.Named(connection)
.UsingFactoryMethod(() => new Service(
container.Resolve<ILog>(),
connection)));
}
}
}
BTW - Я вижу, что вы вставляете регистратор в конструктор. По-моему, это слабая зависимость и лучше всего подходит для инъекции через свойство, а не для конструктора. –