Каждый класс контроллера в моем проекте является производным от базового класса контроллера, метко названного BaseController.
Все данные представления содержатся в классе с именем BaseViewData (который в будущем может стать базовым контроллером для более конкретных классов данных представления).
Я создал свойство BaseViewData для BaseController, поскольку каждому контроллеру требуется доступ к данным внутри строго типизированных данных базового представления (и BaseController выполняет некоторую работу по предварительному заполнению некоторых свойств BaseViewData).
Я сделал это потому, что:
Если бы я когда-либо изменил свойство, я бы получил проверку ошибок времени компиляции, чтобы быстрее разрешить неработающий код.
Практикуя DRY, мне удалось консолидировать МНОГО кода, который ранее был разбросан по каждому контроллеру.
Однако это первая попытка сделать это. Так что я мог упустить из виду проблему, готовясь вскинуть свою уродливую голову. Так:
Является ли плохой идеей превращать класс BaseViewData в свойство класса BaseController? Если да, то почему?
Обновление 1:
Мой BaseController выглядит примерно так (есть еще кое-что, но это должно прояснить суть):
public class BaseController
{
public string Language {get; set;}
public string Locale {get; set;}
public BaseViewData Data {get; set;}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var l = (RouteData.Values["language"] != null) ? RouteData.Values["language"].ToString() : "en";
if (l.ToLower().Contains("en"))
{
l = "en";
}
else
l = "ja";
Data.Language = l;
}
}
Мои BaseViewData выглядят так (опять же, есть еще ...):
public class BaseViewData
{
public string Language {get;set;}
public string Locale {get;set;}
public bool IsOwner {get;set;}
public string Menu1 {get;set;}
public string Menu2 {get;set;}
public string Menu3 {get;set;}
public IPagedList<TYPE> ListOfTYPE {get;set;}
etc...
}