无法将自定义类型隐式转换为IDisposable错误

本文关键字:转换 IDisposable 错误 自定义 类型 | 更新日期: 2023-09-27 18:00:07

我有一段代码:

try
{
    using(conn)
    {
         conn.UpdateScheduledTaskGuid(taskID, taskGUID);            
    }
}

conn变量上,我得到错误"无法将类型DataProvider隐式转换为System.IDisposable"

DataProvider是一个自定义类,有人在我工作的这个项目中创建了它,它是上面conn变量的类型。

我想我需要让DataProvider实现IDisposable,但我不确定这是否真的是这里的问题,如果我必须实现它,它有什么非托管资源的问题,需要我添加IDisposaable?

这是DataProvider类:DataProvider.txt

无法将自定义类型隐式转换为IDisposable错误

从MSDN页面了解using语句。

Provides a convenient syntax that ensures the correct use of IDisposable objects.

所有此类类型都必须实现IDisposable接口。

因此,是的,您需要让DataProvider实现IDisposable,以便在使用块中使用它。

DataProvider必须确实实现IDisposable,因为它拥有一个IDbConnection,必须正确地处理它。

"using"关键字只是编写异常安全代码的一种有用方法,当变量超出范围时,该代码将调用Dispose()。如果您不打算调用Dispose(),那么它就没有用了。该函数由IDisposable接口声明。

如果您没有非托管资源,那么无论如何都不应该对其使用"using"。

这里有一个很好的描述:http://www.codeproject.com/KB/cs/using_and_IDisposable.aspx

是的,为了使用'using'语句,对象需要实现IDisposable。我浏览了一些代码,没有看到任何非托管代码(尽管我可能错了,因为那里有很多代码)。