gpt4 book ai didi

.net - 无法调用 Dispose?

转载 作者:行者123 更新时间:2023-12-04 00:50:49 25 4
gpt4 key购买 nike

这个让我有点困惑......试图处理 XmlReader

XmlReader reader = XmlReader.Create(filePath);
reader.Dispose();

提供以下错误:

'System.Xml.XmlReader.Dispose(bool)' is inaccessible due to its protection level



但是以下很好:
using(XmlReader reader = XmlReader.Create(filePath))
{
}

当我查看 Reflector 中的定义时,我不明白为什么我不能调用 Dispose

XmlReader

Dispose的实现:

Dispose

谁能指出我错过了什么?

最佳答案

问题是 XmlReaderimplement IDisposable 使用显式接口(interface)实现.所以你可以写:

XmlReader reader = XmlReader.Create(filePath);
((IDisposable)reader).Dispose();

但是,我强烈建议使用 using无论如何声明。您调用 Dispose 的情况应该很少见。明确地,而不是在另一个 Dispose 内执行。

编辑:如前所述,这在 .NET 4.5 中是“固定的”,因为它公开了 public parameterless Dispose method从 .NET 4.5 以及显式接口(interface)实现开始。因此,大概您正在针对 .NET 4.0 或更早版本进行编译(可能是 .NET 2.0 给定了您的标签),但是针对 .NET 4.5 使用了 Reflector?

关于.net - 无法调用 Dispose?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9582320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com