无法将自定义类型隐式转换为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
从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。我浏览了一些代码,没有看到任何非托管代码(尽管我可能错了,因为那里有很多代码)。