Я создал начальную установку приложения MVC 3 и передал конструктору контроллера объект ModelStateDictionary в конструкторе.Это объект из пространства имен System.Web.Mvc.
Ошибка активации ModelStateDictionary с помощью неявного самосвязывания ModelStateDictionary Обнаружена циклическая зависимость между конструкторами двух служб.
Путь активации: 3) Внедрение зависимости ModelStateDictionary в словарь параметровконструктор типа ModelStateDictionary 2) Внедрение зависимости ModelStateDictionary в параметр modelDict конструктора типа HomeController 1) Запрос HomeController
Как решить эту проблему?Как мне абстрагировать это так, чтобы оно работало?Является ли это возможным?Я провел некоторый поиск в Stackoverflow и ninject.org ... но не понимаю, как это применимо, потому что я не могу напрямую изменить ModelStateDictionary.
public class HomeController : Controller
{
private readonly ModelStateDictionary _modelDict;
public HomeController(ModelStateDictionary modelDict)
{
_modelDict = modelDict;
}
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
}
public void SetupDependencyInjection()
{
IKernel kernel = new StandardKernel();
//kernel.Bind<>().To<>();
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
public class NinjectDependencyResolver : IDependencyResolver
{
private readonly IResolutionRoot _resolutionRoot;
public NinjectDependencyResolver(IResolutionRoot kernel)
{
_resolutionRoot = kernel;
}
public object GetService(Type serviceType)
{
return _resolutionRoot.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return _resolutionRoot.GetAll(serviceType);
}
}
Это простой пример, и я не использую этот способ в своем собственном коде ... но ситуация и теория одинаковы.ModelStateDictionary должен быть неявно самосвязанным.Ninject выбирает конструктор, который принимает объект ModelStateDictionary, даже если есть конструктор, который не принимает параметров.Не должен ли ninject вернуться к конструктору без параметров, если конструктор с наибольшим количеством параметров не работает?