gpt4 book ai didi

c# - 为什么编译器尝试但无法将 Devart.Data.Oracle.OracleCommand 转换为 System.IDisposable?

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:01 30 4
gpt4 key购买 nike

我编写了几个应用程序,其中我使用 Devart 的 DotConnect for Oracle 组件。在我当前的问题中,我看到了 Resharper 提出的几个新问题(如果忽略 Resharper 的输入,应用程序编译并运行良好)。

特别是我有几个(在 Resharper 的“C# 编译器错误”类别中 - 同样,编译器本身并没有真正提示这些)是:

“无法将类型‘Devart.Data.Oracle.OracleCommand’隐式转换为‘System.IDisposable’”

为什么现在这会成为一个问题,因为它还没有出现在具有相同类型代码的其他项目中,例如:

using (OracleCommand ocmd = new OracleCommand(query, oc)) {

注意:如果我更改代码以使用像这样的隐式类型,我也会得到同样的 Resharper 批评/观察:

using (var ocmd = new OracleCommand(query, oc)) {

最佳答案

根据 the documentation ,它确实确实实现了IDisposable,正如我所期望的那样。 (是的,它必须隐式转换为 IDisposable 才能在 using 语句中使用。using 语句的目的是资源在最后处理其中,“一次性资源”的表示是 IDisposable 接口(interface)...)

请注意,此处的真正 C# 编译器没有问题,否则您将无法运行您的应用程序 - 这表明这是一个 ReSharper 问题。

可能性:

  • R# 可能有自己的 IL 解析,由于某种原因在 DotConnect 库上失败
  • R# 可能以某种方式“丢失”了程序集(或者加载失败,例如)
  • 您的安装可能以某种方式失败

我会开始卸载并重新安装 R#,并清除所有 ReSharper 缓存目录,只是为了让事情有一个相当干净的开始。尝试删除并读取对 DotConnect 的引用。

如果失败,我怀疑您最好与 JetBrains 支持人员联系,因为它听起来确实是特定于 R# 的。我的经验是他们的技术支持真的很有帮助。

关于c# - 为什么编译器尝试但无法将 Devart.Data.Oracle.OracleCommand 转换为 System.IDisposable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270710/

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