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

发布于 2024-11-17 05:20:27 字数 616 浏览 1 评论 0原文

我有这段代码:

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

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

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

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

以下是 DataProvider 类:DataProvider.txt

I've got this piece of code:

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

On the conn variable I'm getting the error "Cannot implicitly convert type DataProvider to System.IDisposable"

DataProvider is a custom class that someone created in this project I'm working in which is the type for the conn variable above.

I guess I need to have DataProvider implement IDisposable but I am not sure if that's really the problem here or not and if I do have to implement it, what unmanaged resources is it having a problem with that requires me to add IDisposable?

Here's the DataProvider class:DataProvider.txt

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

春庭雪 2024-11-24 05:20:27

来自有关使用声明的 MSDN 页面

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

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

所以是的,您需要让 DataProvider 实现 IDisposable 才能像在 using 块中一样使用它。

From the MSDN page about the using Statement.

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

and

All such types must implement the
IDisposable interface.

So yes, you will need to have your DataProvider implement IDisposable to use it as you are in a using block.

左耳近心 2024-11-24 05:20:27

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

DataProvider must indeed implement IDisposable, because it owns a IDbConnection, which it must properly dispose of.

溺渁∝ 2024-11-24 05:20:27

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

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

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

The "using" keyword is just a helpful way of writing exception-safe code that will call Dispose() when the variable goes out of scope. If you're not going to call Dispose(), it's not useful. That function is declared by the IDisposable interface.

If you don't have unmanaged resources, you shouldn't be using "using" on it, anyway.

A good description of this is here:
http://www.codeproject.com/KB/cs/using_and_IDisposable.aspx

贱人配狗天长地久 2024-11-24 05:20:27

是的,为了使用“using”语句,对象需要实现 IDisposable。我查看了一些代码,没有看到任何非托管代码(尽管我可能会弄错,因为那里有大量代码)。

Yes, in order to use the 'using' statement the object needs to implement IDisposable. I looked through a bit of that code and I didn't see any unmanaged code (although I could be mistaken since there is a ton of code there).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文