为什么即使我的类型实现了IDisposable,使用Using语句仍然会出错?

9
在我的DataAccess项目中,我有以下代码:
using (TandAEntities dataContext = new TandAEntities())
{
    // Some code
}

这段代码没有错误并且可以正常运行。

但是在我的单元测试项目中,我有同样的代码,但编译器会报错;使用语句中使用的类型必须可以隐式转换为'System.IDisposable'

我通过按下F12来检查定义,它确实实现了IDisposable并且有一个dispose方法。

我可能缺少一些引用吗?


你能展示一下你的单元测试代码吗?它为什么无法编译? - Darin Dimitrov
1
https://dev59.com/7Gw15IYBdhLWcg3wO5EH - Tim M.
1个回答

12

在链接的重复问题中,最可能的答案是缺少 using System.Data.Linq

其他选项:您的某些DLL文件过期了(即被安装在全局程序集缓存中)。

如果您无法轻松地查找到过期的DLL文件,则将代码更改为使用此类型但编译并调试测试。检查Debug->Windows->Modules以查看实际使用此类型的程序集位置。


7
我使用了System.Data.Linq,但是它没有起作用,然后我添加了对EntityFramework的引用,它就工作了。 - Cloud9999Strife
3
关键是要添加所有必要的DLL,以便编译器可以搜索所有这些DLL,找到可以转换为“IDisposable”的基类。例如,实现“IDisposable”的“DataContext”类存在于EntityFramework DLL中。 - Saeed Neamati
2
对于我的情况,在添加了 System.Data.Linq 引用之后,错误消失了。 - etlds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接