Я пытаюсь понять, как использовать Simple Injector, я использовал его в проекте без проблем с регистрацией простых сервисов и их компонентов.
Однако я хотел использовать инжектор зависимостей при наличии компонента с более чем двумя конструкторами, реализующими интерфейс.
public DAL: IDAL
{
private Logger logger;
string _dbInstance;
public DAL()
{
logger = new Logger();
}
public DAL(string databaseInstance)
{
logger = new Logger();
_dbInstance = databaseInstance;
}
}
Вот как я регистрирую услуги:
container.Register<IDAL, DAL>();
при запуске кода возникает ошибка:
Чтобы контейнер мог создавать DAL, он должен содержать ровно один общедоступный конструктор, но у него есть 2.
После удаления конструктора следующая ошибка заключается в том, что он не позволяет моему конструктору принимать параметр.
Конструктор типа DAL содержит параметр databaseInstance типа String, который нельзя использовать для внедрения конструктора.
Есть ли способ сделать инъекцию зависимостей, когда класс имеет более двух общедоступных конструкторов? Или иметь один общедоступный конструктор, принимающий параметр?
Я прочитал документацию здесь: SimpleInjector (Начало работы)
Документ начинается легко для понимания, но он становится экспоненциально сложным, и мне трудно понять, относится ли какой-либо из последних примеров, которые они упоминают, к моей проблеме.
container.Register<IDAL, DAL>(() => new Dal("databaseInstance"));
- person nemesv   schedule 03.01.2014