C# 如何实现自定义控制器工厂ASP.NET MVC

C# 如何实现自定义控制器工厂ASP.NET MVC,c#,asp.net-mvc,C#,Asp.net Mvc,我是mvc领域的新手。所以我仍然在学习,并努力学习MVC的许多先进领域。所以我读了一篇关于定制控制器工厂ASP.NETMVC的帖子 一个家伙解释得太少了,所以我不知道如何实施。这是帖子的url 他说 您希望/Product/Index触发MyController.Index() 这可以通过编写自己的IControllerFactory并实现如下CreateController方法来实现: public IController CreateController(RequestContext re

我是mvc领域的新手。所以我仍然在学习,并努力学习MVC的许多先进领域。所以我读了一篇关于定制控制器工厂ASP.NETMVC的帖子

一个家伙解释得太少了,所以我不知道如何实施。这是帖子的url

他说 您希望
/Product/Index
触发
MyController.Index()

这可以通过编写自己的IControllerFactory并实现如下
CreateController
方法来实现:

public IController CreateController(RequestContext requestContext, string controllerName)
{
    Type controllerType = Type.GetType("MyController").MakeGenericType(Type.GetType(controllerName));
    return Activator.CreateInstance(controllerType) as IController;
}
需要更多的示例代码。只是不知道在哪里定义
CreateController
函数。我是否需要在基本控制器中编写此函数

当请求类似于
/Product/Index
/Customer/Index
时,如何在基本控制器中调用Index方法

所以,在MVC高级区为像我这样的新手寻找指导。谢谢

您需要实现(或继承其中包含一些额外功能的功能)。之后,使用以下方法在
应用程序\u Start
中设置控制器工厂:

希望这能为你澄清一些事情

  • 您需要创建一个实现 接口
  • 您可以忽略ReleaseController方法
  • 您可以返回GetControllerSessionBehavior方法的SessionStateBehavior.Default
  • 在应用程序_Start中,按如下方式设置自定义ControllerFactory:

    ControllerBuilder.Current.SetControllerFactory(typeof(CCustomControllerFactory))


  • 在答案中,它来自DefaultControllerFactory。对于这个问题,您必须实现IControllerFactory。从DefaultControllerFactory派生不会有帮助。DefaultControllerFactory也会起作用。显示的代码没有覆盖,因此假定它需要IControllerFactory。这两种方法都可以。你能把我重定向到IControllerFactory接口的任何文章吗。谢谢,请重新引导我阅读有关IControllerFactory界面的任何文章。thanks@ThomasIoC是使用自定义控制器工厂的最佳示例之一。本文可能会帮助您:
    ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());