Возврат одноразового предмета и получение предупреждения CA2000
Я пытаюсь вернуть 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);
1 ответ
Ну, мы понятия не имеем, что ser.method
делает, но передача удаленного объекта в method
кажется плохой идеей для меня. По сути, ваше "исправление" - это плохо.
Здесь есть три возможности (и, возможно, другие, но это основные):
ser.method
располагает своим параметром сам. (Вероятно, это плохая идея, но она может подойти.) В этом случае ваш оригинальный код в порядке.ser.method
не избавляется от своего параметра, но возвращает то, что полагается на читателяser.method
не располагает своим параметром и возвращает то, что не нужно, чтобы читатель оставался открытым
Я надеюсь, что последним из них является случай, и в этом случае вы должны изменить свой код на:
using (XmlNodeReader reader = new XmlNodeReader(section))
{
return ser.method(reader);
}