gpt4 book ai didi

c# - Controller 上的 "CA2000 Dispose objects before losing scope"

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:27 24 4
gpt4 key购买 nike

我在代码分析中有一个 CA2000 警告。但我找不到如何解决它或为什么它是一个问题。这是失败的代码:

 IController controller = new ErrorController();
controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));

我试过这样解决:

using (IController controller = new ErrorController())
{
controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}

但是 MVC 给我这个错误:

55  'System.Web.Mvc.IController': type used in a using statement must be implicitly convertible to 'System.IDisposable'

我可以只抑制错误,但我想知道导致错误的原因并解决问题。

最佳答案

我不使用接口(interface),而是将其换成 var:

using (var controller = new ErrorController())
{
controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}

这将允许将类型推断为 ErrorController

IDisposable 接口(interface)附加到 Controller 类。但并不存在于链条的上游。 Here is the docs for Controller .因此,为了处置,您需要在实现 IDisposable 的类上调用它。因此,IController won't work .

关于c# - Controller 上的 "CA2000 Dispose objects before losing scope",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15357290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com