在Visual Studio 2010

在Visual Studio 2010

问题描述:

“未实现IControllerFactory.CreateController” 当编译此代码:在Visual Studio 2010

public class WindsorControllerFactory : IControllerFactory 
{ 
    private readonly WindsorContainer _container; 

    public WindsorControllerFactory(WindsorContainer container) 
    { 
     _container = container; 
    } 

    public IController CreateController(RequestContext requestContext, 
             string controllerName) 
    { 
     return (IController)_container.Resolve(controllerName); 
    } 

    public void ReleaseController(IController controller) 
    { 
     _container.Release(controller); 
    } 
} 

我收到此错误:

'WindsorControllerFactory' does not implement interface member 'System.Web.Mvc.IControllerFactory.CreateController(System.Web.Routing.RequestContext, string)'

那么,它显然实现了这个成员。有没有人遇到过这个问题?

我在RTM上转载了这个,打开了ticket with Microsoft

+0

尝试右键单击IControllerFactory后面的“:”并说实现界面,错过会出现 – 2010-04-10 14:03:13

+0

@Oskar - 没有错过的方法,这就是问题所在。如果我注释掉CreateController方法,并使用Resharper执行“实现方法”,则代码仍然不能编译。 – ripper234 2010-04-10 14:04:41

+0

尝试明确实施吗? – 2010-04-10 14:05:44

你可能有两个相互冲突的System.Web.routing或类似的版本。

+0

我该如何检查? – ripper234 2010-04-10 15:11:18

+0

您是否安装了多个Betas或RCs?你在bin文件夹中有一些可疑的东西吗? 你试过用csc.exe编译它吗? 顺便说一句 - 看看VS的输出窗口,看看它生成的csc.exe调用? – 2010-04-10 15:50:34

+0

我以前测试过2,然后完全卸载它然后安装RC。我会尝试看看csc.exe所说的。 – ripper234 2010-04-11 04:56:14

System.ServiceModel.Channels命名空间中还有一个RequestContext类;包含在System.ServiceModel.dll程序集中。

将鼠标悬停在您的方法的RequestContext参数类型上,并检查它是否指向正确的方法。

更多信息here

+0

我写了明确的类名,它没有帮助:( – ripper234 2010-04-13 13:06:46

+0

并且你写了System.Web.Routing。RequestContext或System.ServiceModel.Channels.RequestContext?你应该有第一个。 – Thomas 2010-04-13 14:17:32

+0

明天我会仔细检查。 – ripper234 2010-04-15 05:52:05

错误走了后,我加入参考System.Web.Routing 4.0.0.0。在此之前它是间接引用到3.5.0.0版本(通过System.Web.Mvc,版本= 2.0.0.0,文化=中性公钥= 31bf3856ad364e35)

因此我有以下引用:
System.Web程序。 Mvc 2.0.0.0(v2.0.50727)
System.Web.Routing 4.0.0.0(v4.0.30128)

+0

我会试一试你的建议。 – ripper234 2010-04-15 05:43:23

+0

不起作用,对不起。 – ripper234 2010-04-16 10:33:19

+0

帮我!这是在.NET 4.0解决方案中定义了定制控制器(通过IController)并引用了MVC 2.0的情况。 – Ropstah 2011-09-20 08:47:03

包含对System.Web(v4.0.30319)的引用。