Изучаю mvc 5 на metanit. Добрался до пункта архитектура приложений. И тут возникло много вопросов. Изучаю конкретно onion архитектуру и принцип UnitOfWork. И в связи с этими пунктами у меня появилось несколько вопросов.
Во первых: В примере на metanit есть вот такой вот конструктор контроллера
IBookRepository repo;
IOrder order;
public HomeController(IBookRepository r, IOrder o)
{
repo = r;
order = o;
}
И если запустить этот код без ninject, тогда вылетит ошибка, что для контроллера отсутствует базовый конструктор без параметров. И первый вопрос получается в том, как ninject делает так что такой конструктор уже не требуется? Как работает контейнер зависимостей Ninject?
Во вторых: Если я буду использовать принцип UnitOfWork мне уже не придётся создавать конструктор с параметрами. И получается всё уже работает без Ninject и суть второго вопроса почти похожа на первый. Зачем тогда вообще нужно внедрение зависимостей с помощью Ninject.
В третьих: В выше приведённом мной коде с metanit Для того что бы создать репозиторий используется экземпляр интерфейса, но ведь можно вместо этого написать экземпляр самого репозитория а не его интерфейса. Как как раз и делается в примере со следующей главы UnitOfWork
private OrderContext db = new OrderContext();
private BookRepository bookRepository;
private OrderRepository orderRepository;
public BookRepository Books
{
get
{
if (bookRepository == null)
bookRepository = new BookRepository(db);
return bookRepository;
}
}
В чём разница между этими способами? Я так понимаю в обоих случаях что если мы сразу делаем экземпляр класса репозитория или если мы это делаем через интерфейс? Всё равно создаться экземпляр репозитория?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть TabControl с ItemsSource и биндингом к TabItem с ViewModelКак мне передать в TabItem ViewModel TabItem View?
Требуется разделить товары на категории, на странице товаров - чтобы шёл заголовок категории, по центру, а дальше товары из неё, как на блок-схеме...
Есть php код который вернёт true или false можно ли через json encode получить это значение? Конвертировать для js
Столкнулся с проблемойБыл код , решил добавить защиту от инъекций , но добавление в базу перестало работать