Мое приложение может запускаться без подключения к базе данных, как мне обрабатывать это с помощью ввода-вывода IoC и конструктора?Впрыск конструктора в приложениях, где зависимостей, возможно, не удастся инициализировать
Пример:
public class ApplicationShellPresenter(IRepository repository, IView view)
{
}
Когда IRepository в этом случае будет построен исключение будет выброшено из-за нижележащего ДАЛ не может найти конфигурационный файл /, неправильное имя пользователя/пароль и т.д. и т.п.
С этим в виду, я пришел к выводу, что я не могу вставить репозиторий в конструктор ИЛИ вставить все, что в конечном итоге по линии имеет IRepository как зависимость.
Мне нужно начать без зависимости от IRepository, и когда пользователь внес правильные настройки базы данных, зарегистрируйте IRepository в контейнере. Но потом я уже покинул корневой состав.
Edit:
Моя проблема была на самом деле не IoC/Constructor инъекции - проблема, а скорее недостаток дизайна в нашем нижележащего DAL.
Наш DAL строится при создании. И вот почему этот дизайн не работал, потому что я не мог построить зависимость IRepository, не создавая наш DAL-движок.
Моим простым решением было обернуть наш DAL, чтобы он не создавал себя при создании.
Спасибо, интересные idéas. – Marcus