Вам необходимо определить IMessagesProvider и использовать контейнер DI для внедрения реализации IMessagesProvider.В реальном использовании у вас будет реализация, использующая сеанс ASP.Net.В тестовом использовании вы будете в основном издеваться над этим.Кстати, у вас, вероятно, не должно быть статического класса сообщений.Фактически, IMessagesProvider, вероятно, заменит ваш статический класс Messages.
Пример:
public class FooController : Controller
{
IMessagesProvider _messages;
public FooController(IMessagesProvider messages)
{
// Your DI container will inject the messages provider automatically.
_messages = messages;
}
public ActionResult Index()
{
ViewData["messages"] = _messages.GetMessages(Session.SessionId);
return View();
}
}
Имейте в виду, это очень простой пример.На самом деле, вам, вероятно, нужен еще один класс - модель, которая управляет представлением.Краткое введение:
public ActionResult Index()
{
var model = PrepareModel(_messages);
return View(model);
}
«PrepareModel» - это ваш собственный метод, который создает экземпляр нового класса модели, заполняет его необходимыми данными, а затем отправляет их на просмотр.Типично иметь один класс модели для каждого вида.Например, у вас будут классы моделей, такие как «RegistrationFormModel», «DashboardModel», «ChatModel» и т. Д. Это позволяет также иметь строго типизированные представления (отличная вещь).