Я создал проект ASP.NET MVC Visual Studio 2017 с использованием Framework .NET Core 2.1. Я новичок в Visual Studio 2017, как импортировать ссылки и внедрение зависимостей Castle Windsor, поэтому мои проблемы могут быть довольно простыми. Моя конечная цель - использовать инъекцию зависимостей Castle Windsor, чтобы указать мой контроллер, связанный с классом Entity Framework. У меня есть функциональный код без Castle Windsor, но я пытаюсь изучить и специально использовать здесь Castle Windsor.
Я просмотрел несколько статей для Castle Windsor, например:
https://www.c -sharpcorner.com / блог / как к орудию-замок-Виндзор-зависимость инъекции-в-MVC . Однако этот пример использует MVC4. В настоящее время у меня есть пользовательский DbContext
для предоставления доступа к моим тестовым объектам.
Моя веб-страница уже может разрешить контроллер, который, как мне кажется, мой оператор MapRoute, который был создан автоматически при создании класса моего контроллера.
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=TestEntities}/{action=Index}/{id?}");
});
Как я могу включить инъекцию Castle Windsor Dependency в этот сценарий? Нужно ли мне изменить определение маршрута?
Согласно учебному пособию https://github.com/castleproject/Windsor/blob/master/docs/mvc-tutorial-part-2-plugging-windsor-in.md
Я пытался создать WindsorControllerFactory, чтобы предположительно разрешить мой контроллер.
public class WindsorControllerFactory : DefaultControllerFactory
{
private readonly IKernel kernel;
public WindsorControllerFactory(IKernel kernel)
{
this.kernel = kernel;
}
public override void ReleaseController(IController controller)
{
kernel.ReleaseComponent(controller);
}
protected override IController GetControllerInstance(
RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
throw new HttpException(404, string.Format(
"The controller for path '{0}' could not be found.",
requestContext.HttpContext.Request.Path));
}
return (IController)kernel.Resolve(controllerType);
}
}
В VS2017 я, похоже, не смог использовать пространство имен System.Web.Routing в своем проекте, даже когда я добавил версию .NET Framework 4.0 в качестве ссылки на сборку. Это означает, что я не могу разрешить класс RequestContext. Я выбрал неправильный путь здесь? Я не вижу, где отсутствующее пространство имен Routing является проблемой для других.
Буду признателен за любые входные данные или за хорошие ссылки для этого сценария.