我已经在 SO 中查看过类似这样的问题,即使我发现了很多,但其中任何一个都为我提供了关于这个问题的任何信息。
假设我有这个代码:
public class SuperObject : IDisposable
{
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing) { }
}
- 我需要
protected virtual void Dispose(bool)
开SuperObject
吗?因为那里真的没有什么可处置的。
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
}
}
}
现在,如果我想要/需要/尝试在已经实现并已经实现 IDisposableCustom
的类上使用会发生什么?System.Web.Mvc.Controller
public class Moo : Controller
{
Custom c;
public Moo()
{
c = new Custom();
}
// Use c throughout this class
}
如何正确c
处置Moo
?