我正在尝试将XMLNodeReader返回到另一个函数但是获得CA2000警告
XmlNodeReader obj =new XmlNodeReader(section);
return ser.method(obj);
如果我使用以下代码,它会正常工作吗?警告被抑制但不确定它是否会影响逻辑。
XmlNodeReader tempObj =new XmlNodeReader(section);
XmlNodeReader retObj=null;
retObj = tempObj;
tempObj.Dispose();
return ser.method(retObj);
答案 0 :(得分:2)
我们不知道ser.method
做了什么,但将一个已处置的对象传递给method
对我来说似乎是一个坏主意。基本上,你的"修复"很糟糕。
这里有三种可能性(可能还有其他的,但这些是主要的):
ser.method
处理其参数本身。 (这可能是一个坏主意,但可能会这样做。)在这种情况下,您的原始代码就可以了。ser.method
不会处理其参数,但会返回依赖于仍然没有处理的读者的内容ser.method
不会处理其参数,并返回一些不需要读者保持打开的内容我希望最后一个是这种情况,在这种情况下,您应该将代码更改为:
using (XmlNodeReader reader = new XmlNodeReader(section))
{
return ser.method(reader);
}