-2

以下のコード行を使用していて、エラーが発生しています:

usingステートメントで使用されるタイプは、暗黙的にSystem.IDisposableに変換可能である必要があります

このエラーを根絶するにはどうすればよいですか?これはコード行です:

using (var db = new HealthTrackerContext())
4

4 に答える 4

5

HealthTrackerContextを実装しない場合、IDisposableこのエラーが発生します。あなたのクラスはそうではないと思います。したがって、この状況を改善するには、オブジェクトに実装するか、ブロックIDisposableを削除する必要があります。using

ブロックを使用しないことには何の問題もありませんusing、btw = 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 に答える