1.
Я думаю, что в вашем примере с гостиницей вы больше похожи на то, чтобы поесть, и вас попросили сначала построить кухню, сделать тарелки, миски и посуду, накрыть стол истул, выращивать пшеницу и овощи, убивать и разделывать мясо, а затем готовить еду и убирать.
Мой пример - операция / операция.Хирург отвечает за выполнение операции.Вот и все.Она не делает хирургические инструменты и не собирает их все из шкафов.Когда она появляется, чтобы выполнить операцию, все инструменты выстроены в линию и готовы к ней - они были предоставлены извне, и хирург не заботится и не должен знать, кто их туда поместил, пока они доступны.и готово, когда ей нужно работать.
Аналогично в данном классе внедрение зависимостей означает, что любой другой компонент, на который полагается класс, выполняет свою работу, должен быть "внедрен" в качестве параметра в конструктор илиустановка свойства при создании экземпляра класса.Класс не занимается поиском или созданием этих вещей.
2.
Я бы упомянул, что Microsoft Patterns & Practices / Enterprise Library поддерживает DI с прикладным блоком Unity (инверсияконтроля), и я думаю , что библиотека ASP.NET MVC использует DI.