mor*_*rck 1 c# code-analysis asp.net-mvc-4
我在代码分析中有一个CA2000警告.但我无法找到如何解决它或为什么它是一个问题.这是失败的代码:
IController controller = new ErrorController();
controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
Run Code Online (Sandbox Code Playgroud)
我试图像这样解决它:
using (IController controller = new ErrorController())
{
controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
Run Code Online (Sandbox Code Playgroud)
但是MVC给了我这个错误:
55 'System.Web.Mvc.IController': type used in a using statement must be implicitly convertible to 'System.IDisposable'
Run Code Online (Sandbox Code Playgroud)
我可以压制错误,但我想知道导致错误的原因并解决问题.
我不会使用界面,而是将其换成var:
using (var controller = new ErrorController())
{
controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
Run Code Online (Sandbox Code Playgroud)
这将允许将类型推断为ErrorController.
所述IDisposable接口附接至Controller类.但是不存在更高的链条. 这是文档Controller.因此,为了处理,您需要在实现的类上调用它IDisposable.因此,IController 不会起作用.