Приведенный ниже код пытается создать механизм связывания модели с учетом зависимостей. Связыватель модели должен создавать экземпляр объекта на основе объекта в запросе .Тем не менее, я не вижу логики в коде ниже, который только создает экземпляр объекта.Кроме того, я пытаюсь его отладить, метод CreateModel НЕ вызывается.
Creating a DI-Aware Model Binder
using System;
using System.Web.Mvc;
namespace MvcApp.Infrastructure {
public class DIModelBinder : DefaultModelBinder {
protected override object CreateModel(ControllerContext controllerContext,
ModelBindingContext bindingContext, Type modelType) {
return DependencyResolver.Current.GetService(modelType) ??
base.CreateModel(controllerContext, bindingContext, modelType);
}
}
}
Этот класс использует средство определения зависимостей в приложении для создания объектов модели и возвращается к базовому классу.реализация, если требуется (которая использует класс System.Activator для создания экземпляра модели с использованием конструктора по умолчанию).
Мы должны зарегистрировать наш связыватель в приложении как связыватель модели по умолчанию, что мы делаем в методе Appliction_StartGlobal.asax, как показано ниже.
Registering a Default Model Binder
protected void Application_Start() {
AreaRegistration.RegisterAllAreas();
ModelBinders.Binders.DefaultBinder = new DIModelBinder();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}