gun*_*shy 10 structuremap asp.net-mvc asp.net-mvc-2
我有一个项目,我使用StructureMap进行依赖注入.该项目作为MVC项目编译良好,但在将所有内容移动到MVC2项目后,我现在收到以下错误:
Test.Web.Controllers.StructureMapControllerFactory.GetControllerInstance(System.Type)':找不到合适的方法来覆盖C:\ Test\Web\Controllers\StructureMapControllerFactory.cs 11 40 Test.Web
这是我的StructureMapControllerFactory:
using System;
using System.Web.Mvc;
using StructureMap;
namespace Test.Web.Controllers
{
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)**
{
IController result = null;
try
{
if (controllerType == null) return base.GetControllerInstance(controllerType);
result = ObjectFactory.GetInstance(controllerType) as Controller;
}
catch (StructureMapException)
{
System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave());
throw;
}
return result;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了一个与此问题半关联的帖子,但它没有提供任何关于如何解决我的问题的见解:MVC 2预览1 - 控制器中带参数的方法无法加载
显然我必须错过1.0-2.0级别的变化,但我不确定是什么改变了.任何帮助总是受到赞赏.
Cra*_*ntz 19
这种方法的签名发生了变化.现在有一个RequestContext的第一个参数:
protected override IController GetControllerInstance(
RequestContext requestContext,
Type controllerType)
Run Code Online (Sandbox Code Playgroud)
您还需要将您的调用更改为base.GetControllerInstance:
if (controllerType == null)
return base.GetControllerInstance(requestContext, controllerType);
Run Code Online (Sandbox Code Playgroud)
Craig Stuntz在这里非常正确.
如果您的DI与MVC应用程序不同,请确保您不要忘记引用System.Web.Routing.
出于某种原因,IDE中没有显示任何错误,但是在编译时我仍然会得到一个GetControllerInstance"没有找到合适的方法来覆盖".
一旦我纠正了System.Web.Routing缺失的引用程序集,一切都很顺利......
| 归档时间: |
|
| 查看次数: |
3915 次 |
| 最近记录: |