Сегодня утром я обсуждал возможные пути использования логики локализации, которая будет выполнять локализацию наших моделей.«Чистое» потребление логики локализации в ASP.NET MVC
Вопрос в том, что было бы более чистой реализацией для потребления логики локализации?
Вариант 1: Использование АОП Style Filter на контроллере Действие
[LocalizeModel]
public ActionResult Index()
{
Menu menu = _menuRepository.GetMenu(MENU_TYPE);
return PartialView("Index", menu);
}
Где LocalizeModel Атрибут перехватит возвращаемого значения, а также выполнять локализацию модели на основе ее типа (с учетом его реализует данный интерфейс).
Вариант 2: Расход через Dependency Injection
public MenuController(IMenuRepository menuRepository, ILocalizeMenus menuLocalization)
{
_menuRepository = menuRepository;
_menuLocalization = menuLocalization;
}
public ActionResult Index()
{
Menu menu = _menuRepository.GetMenu(MENU_TYPE);
_menuLocalization.LocalizeAllText(menu);
return PartialView("Index", menu);
}
Другой вариант?
Использование декоратора (в принятом ответе) было моим выбором, мне понравилось, как он уменьшил зависимостей между контроллерами, а также скрыл множественные вызовы в MenuRepository (который, по общему признанию, не является репозиторием по моему определению шаблона). – holsee