我看着在SO大約像這樣的問題,甚至我發現相當多的,任何那些扔任何光線進入這件事情對我來說。瞭解一次性對象
假設我有這樣的代碼:
public class SuperObject : IDisposable
{
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing) { }
}
- 我需要在
SuperObject
的protected virtual void Dispose(bool)
?因爲這裏沒有任何東西可以處理。
public interface ICustom : IDisposable { }
public class Custom : ICustom
{
public SuperObject Super { get; protected set; }
public Custom()
{
Super = new SuperObject();
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public virtual void Dispose(bool disposing)
{
if (!disposing) return;
if (Super != null)
Super.Dispose();
}
}
public class Foo
{
public Foo()
{
using (var c = new Custom())
{
//do magic with c
}
}
}
現在會發生什麼,如果我想/需要/試圖像System.Web.Mvc.Controller
一類已經實現了,並已實施了IDisposable使用Custom
?
public class Moo : Controller
{
Custom c;
public Moo()
{
c = new Custom();
}
// Use c throughout this class
}
如何妥善處理在Moo
c
?
當沒有什麼可配置的時候,請不要實施IDisposable。 –
爲什麼當你沒有Finaizer時使用'GC.SuppressFinalize()'? –
@HamletHakobyan這是一個很好的問題,也許你可以在這裏幫忙:http://stackoverflow.com/q/19078536/544283。 – Esteban