Dot-Net
無法呼叫 Dispose?
這個讓我有點困惑……試圖處理 XmlReader
XmlReader reader = XmlReader.Create(filePath); reader.Dispose();提供以下錯誤:
‘System.Xml.XmlReader.Dispose(bool)’ 由於其保護級別而無法訪問
但是以下很好:
using(XmlReader reader = XmlReader.Create(filePath)) { }當我查看 Reflector 中的定義時,我不明白為什麼我不能呼叫 Dispose
Dispose的實現:
誰能指出我錯過了什麼?
問題是
XmlReader使用顯式介面實現來實現IDisposable。所以你可以寫:XmlReader reader = XmlReader.Create(filePath); ((IDisposable)reader).Dispose();
using但是,無論如何,我強烈建議使用聲明。除了在另一個實現中之外,您應該非常罕見地顯式呼叫。Dispose``Dispose編輯:如前所述,這在 .NET 4.5 中是“固定的”,因為它公開了從 .NET 4.5 開始的公共無參數
Dispose方法以及顯式介面實現。因此,大概您正在針對 .NET 4.0 或更早版本進行編譯(可能是 .NET 2.0 給定了您的標籤),但是針對 .NET 4.5 使用了 Reflector?

