我试图将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);
好吧,我们不知道ser.method
做什么,但是将被抛弃的对象传递到method
对我来说似乎是一个坏主意。基本上,您的"修复"很不好。
这里有三种可能性(可能是其他可能性,但这些都是主要的(:
-
ser.method
处理其参数本身。(这可能是一个坏主意,但可能会这样。(在这种情况下,您的原始代码很好。 -
ser.method
不处理其参数,但它返回依赖读者仍然不被处置的东西 -
ser.method
不处理其参数,并返回不需要读者保持打开的东西
我希望最后一个是这种情况,在这种情况下,您应该将代码更改为:
using (XmlNodeReader reader = new XmlNodeReader(section))
{
return ser.method(reader);
}