1
我是一個庫,它有一個從提供的XmlReader中解析XML的方法。所以,調用者向我傳遞了XmlReader實例(或任何派生類的實例),但我需要確保忽略空白。即我想這樣做:我可以更改XmlReader.Settings嗎?
xmlReader.Settings.IgnoreWhitespace = true;
// Then do my parsing
// Finally, revert to whatever state xmlReader.Settings had prior to calling my method
但是,如果創建的XmlReader實例時,呼叫者沒有實例XmlReaderSettings,我不明白我怎麼能這樣解決我自己的方式。
例如,如果主叫方使用此代碼:
XmlReader reader = new XmlTextReader(File.OpenRead("file.xml"));
reader.Settings將保持爲空。此屬性是隻讀的,因此我無法分配它。
我對調用者不負責,我不強迫他們使用這種或那種獲取XmlReader實例的方式並對其進行配置。我知道XmlTextReader已被棄用,但它仍然可以在.NET 4.6中使用,並且人們可以使用它。
這是否意味着我的庫中沒有辦法解決這個問題,並且它的調用者必須爲我提供已配置好的XmlReader?
'settings.CloseInput'應該控制最後一個方面。 –
@JonHanna thx,不知道。我會添加它。 –
謝謝。但是,在我的測試'settings.CloseInput = false'沒有任何效果。在'使用'作用域結束後,reader.ReadState立即變爲關閉狀態。 – Alex