Поскольку вы используете ASP.NET MVC 3, вы можете написать пользовательский преобразователь зависимостей .Конечно, вы все равно будете проектировать свои контроллеры, используя интерфейсы в своих конструкторах, чтобы ослабить связь между слоями.А затем в пользовательском средстве разрешения зависимостей, чтобы удовлетворить нелепое требование, которое вам было навязано, вам придется вручную сказать, что когда у вас есть ISomeService
, вы возвращаете экземпляр SomeServiceImpl
.Знаете, такие вещи, которые объектные контейнеры и DI-фреймворки уже делают для вас.Таким образом, вам придется изобретать некоторые колеса.Кстати, Ayende написал о том, как можно построить собственный контейнер IoC из 15 строк кода , но, конечно, это не причина, по которой вы должны когда-либо делать что-то подобное.
Люди, навязывающие такиетребования должны предстать перед судом и быть осуждены, чтобы никогда не подходить к дизайну приложения.Введение такого требования иллюстрирует полное отсутствие знаний о передовых методах проектирования приложений.Эти люди должны быть проинформированы, прежде чем они нанесут дальнейший ущерб компании.
Поэтому просто объясните тем людям, что при повторном изобретении колес есть две ошибки:
- вы потратите много временичто-то, что уже было сделано кем-то другим
- , вы допустите ошибки, поскольку не будете принимать во внимание все крайние случаи, которые были приняты во внимание кем-то еще, проектирующим структуру многократного использования DI.
В конце дня вы отправите свое приложение с опозданием по графику (как вы бы потратили впустую время на написание сантехнического кода) и, что еще хуже, вы отправите приложение, которое будет содержать возможные ошибки.
Вывод: дорогой и глючный продукт.Ваше руководство, должно быть, действительно сошло с ума: -)
Заключение2: используйте существующую структуру DI.Руководство даже не заметит, поскольку, похоже, не понимает технических аспектов приложения, навязывая такие требования.