获取控制器实例

本文关键字:实例 控制器 获取 | 更新日期: 2023-09-27 18:12:38

我在vs 2012中使用StructureMap作为IoC项目。我用以下代码创建了一个控制器工厂:

  namespace Mvc_Dependency_Test.Controllers
  {
    public class IoCControllerFactory:DefaultControllerFactory
    {
      protected override IController GetControllerInstance(Type controllerType)
       {
        return (Controller)ObjectFactory.GetInstance(controllerType);
       }
   }
 }

但是我得到

' Mvc_Dependency_Test.Controllers.IoCControllerFactory.GetControllerInstance (System.Type)":没有找到合适的方法覆盖

每次尝试编译时。我卡住了。我做错了什么?

获取控制器实例

从MSDN中,GetControllerInstance的方法签名为:

protected internal virtual IController GetControllerInstance(
RequestContext requestContext,
Type controllerType)

由于您传递的是不同的签名,因此您实际上是在尝试覆盖DefaultControllerFactory中不存在的方法,从而导致错误。要解决这个问题,您需要将方法签名更改为适当的签名,并相应地修改代码。