Я только начинаю использовать Autofac DI впервые в большом производственном проекте. В настоящее время у меня есть регистрация и разрешение "нормальных" ситуаций в Asp.Net MVC3. Под этим я подразумеваю контроллеры, бизнес-уровень, репозитории и т. Д.
Моя проблема в том, что у меня более 50 классов, которые имеют одинаковый интерфейс. Я мог бы дать каждому классу уникальный тип интерфейса, но проблемы с этим подходом:
- Это чрезвычайно утомительно, так как методы абсолютно одинаковы для всех классов
- Это нарушает все принципы СУХОГО кодирования.
Используется в качестве ссылки на класс, для которого создается экземпляр пользовательского атрибута MVC3 в наших моделях представления. Использование:
[CustomAttribute(typeof(foo))]
Public string FooProperty {get;set;};
Этот атрибут затем используется в пользовательском методе HTML Helper MVC3 и получает полное имя типа (или может быть System.Type) для использования из атрибута [CustomAttribute(typeof(foo))]
. От имени класса до экземпляра метод Html.Helper запрашивает создание экземпляра класса. До того, как мы добавили DI в приложение, мы работали с помощью System.Activator.CreateInstance.
Этот подход был принят, потому что он решает проблемы в других частях приложения, где информация об атрибутах используется повторно.
Когда я посмотрел на несколько способов сделать это и был серьезно озадачен правильным подходом. Некоторое руководство будет оценено.