-2

我正在使用下面的代码行并收到错误:

在 using 语句中使用的类型必须可以隐式转换为 System.IDisposable

如何消除此错误?这是代码行:

using (var db = new HealthTrackerContext())
4

4 回答 4

5

如果您HealthTrackerContext不实施IDisposable,您将收到此错误。我怀疑你的班级没有;因此,要解决这种情况,您需要IDisposable在对象上实现或删除using块。

不使用块没有错using,顺便说一句=D

于 2013-03-25T22:12:03.993 回答
0

HealthTrackerContext 应该实现 IDisposable 接口;一旦你实现了那个接口,错误就会消失。

看看这个链接http://msdn.microsoft.com/en-us/library/system.idisposable.aspx

于 2013-03-25T22:13:16.053 回答
0

这意味着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;
}
于 2013-03-25T22:13:41.860 回答
0

您必须像这样为此对象实现 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;
        }


    }   
于 2013-03-25T22:14:03.507 回答