2011-04-20 4 views
0

정말 작가를 아래에 처분해야합니까?네비게이터를 통해 XmlDocument에서 작성된 작성기를 삭제하거나 삭제하지 않습니까?

DataContractSerializer _serialier... 
var actual = new XmlDocument(); 
using (var writer = actual.CreateNavigator().AppendChild()) 
    _serialier.WriteObject(writer, myObj); 

다음 코드를 단순화하지 않으면 : 개체는 IDisposable을 구현

DataContractSerializer _serialier... 
var actual = new XmlDocument(); 
_serialier.WriteObject(actual.CreateNavigator().AppendChild(), myObj); 

답변

1

경우 작업이 완료되면, 당신은 그것을 폐기를 호출해야합니다.

이렇게하지 않으면 코드가 필요 없다는 전제에 따라 달라집니다. 사용중인 XmlWriter이 일부 리소스를 보유하도록 코드가 나중에 리팩토링되면 어떻게됩니까?

+0

작성자가 전달하면 발신자가 처분해야합니다. 그렇지 않습니까? 이 경우 dispose를 호출하는 것은 다소 나쁜 생각입니다. – Schultz9999

+1

좋은 캐치. 말문이 수정되었습니다. 코드를 추적하지 않으면 현재 사례에서 처리 할 리소스가 없음을 알 수 없습니다. –

+0

수정 된 문구로 인해 내 의견이 무의미 해졌습니다. 감사합니다. 사실 나는 IDisposable이 있음을 알거나 깨닫는 모든 곳에서 '사용'을 적용합니다. 이 특별한 경우에, 나는 일종의 일회용 리소스가 XmlDocument가 스트림, 파일 등에서 생성되지 않은 경우에 보유 할 수있는 것이 무엇인지 궁금해하고 있습니다. 모든 가능한 경우를 다루기 위해 선언되어 있고 일부 예외가있을 수 있습니다. Dispose가 많이하지 않을 때. – Schultz9999