我正在使用下面的代码行并收到错误:
在 using 语句中使用的类型必须可以隐式转换为 System.IDisposable
如何消除此错误?这是代码行:
using (var db = new HealthTrackerContext())
我正在使用下面的代码行并收到错误:
在 using 语句中使用的类型必须可以隐式转换为 System.IDisposable
如何消除此错误?这是代码行:
using (var db = new HealthTrackerContext())
如果您HealthTrackerContext
不实施IDisposable
,您将收到此错误。我怀疑你的班级没有;因此,要解决这种情况,您需要IDisposable
在对象上实现或删除using
块。
不使用块没有错using
,顺便说一句=D
HealthTrackerContext 应该实现 IDisposable 接口;一旦你实现了那个接口,错误就会消失。
看看这个链接http://msdn.microsoft.com/en-us/library/system.idisposable.aspx
这意味着HealthTrackerContext
不实施IDisposable
.
易于复制且线程安全的模式:
public partial class HealthTrackerContext: IDisposable {
protected virtual void Dispose(bool disposing) {
lock(thisLock)
if(!disposed) {
if(disposing) {
// release your resource
// and set the referencing variables with null
this.disposed=true;
}
}
}
public void Dispose() {
this.Dispose(true);
GC.SuppressFinalize(this);
}
~HealthTrackerContext() {
this.Dispose(false);
}
object thisLock=new object();
bool disposed;
}
您必须像这样为此对象实现 IDisposable 接口:
public class Disposable : IDisposable
{
private bool isDisposed;
~Disposable()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (!isDisposed && disposing)
{
DisposeCore();
}
isDisposed = true;
}
}