实现 IDisposable。

19 浏览
0 Comments

实现 IDisposable。

This question already has answers here:

Proper use of the IDisposable interface

我有一个以下的类:

public class MyClass : IDisposable
{
   private WebServiceHost m_WebServiceHost;
   // Members
   public void Dispose()
   {
            m_WebServiceHost // how do I dispose this object?
   }
}

WebServiceHost 实现了 IDisposable 接口,但它没有 Dispose 方法。

我该如何实现 Dispose() 方法?

admin 更改状态以发布 2023年5月23日
0
0 Comments

像这样做:

public class MyClass : IDisposable
{
   private WebServiceHost m_WebServiceHost;
   // Often you have to override Dispose method 
   protected virtual void Dispose(Boolean disposing) {
     if (disposing) {
       // It looks that WebServiceHost implements IDisposable explicitly
       IDisposable disp = m_WebServiceHost as IDisposable;
       if (!Object.RefrenceEquals(null, disp))
         disp.Dispose();
       // May be useful when debugging
       disp = null;       
     }
   }
   // Members
   public void Dispose()
   {
     Dispose(true);
     GC.SuppressFinalize(this);
   }
}

0
0 Comments

鉴于它使用了显式接口实现,我不确定他们是否希望你这样做,但你可以:

public class MyClass : IDisposable
{
   private WebServiceHost m_WebServiceHost;
   // Members
   public void Dispose()
   {
            ((IDisposable)m_WebServiceHost).Dispose();
   }
}

我猜他们更愿意你只是调用 Close() 方法,但我还不能从文档中证实这一点。

0