我编写了一些应用程序,其中使用了Devart的Oracle Oracle DotConnect。在我当前的文章中,我看到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
界面...)
请注意,这里的真正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/