获取控制器实例

时间:2014-07-13 18:39:40

标签: c# asp.net-mvc inversion-of-control structuremap

我在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的)':     找不到合适的方法来覆盖

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

1 个答案:

答案 0 :(得分:1)

MSDN开始,GetControllerInstance的方法签名为:

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

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