如果我有一个SomeDisposableObject实现的类IDisposable:
class SomeDisposableObject : IDisposable
{
public void Dispose()
{
// Do some important disposal work.
}
}
Run Code Online (Sandbox Code Playgroud)
我有另一个叫做的类AContainer,它有SomeDisposableObject一个公共属性的实例:
class AContainer
{
SomeDisposableObject m_someObject = new SomeDisposableObject();
public SomeDisposableObject SomeObject
{
get { return m_someObject; }
set { m_someObject = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后FxCop将坚持AContainer也是IDisposable.
这是很好的,但我看不出我可以安全地调用m_someObject.Dispose()从AContainer.Dispose(),作为另一个类可能还是要在一个参考m_someObject实例.
避免这种情况的最佳方法是什么?
(假设其他代码依赖于AContainer.SomeObject始终具有非空值,因此只是将实例的创建移到外部AContainer不是一个选项)
编辑:我将扩展一些例子,因为我认为一些评论者错过了这个问题.如果我只实现一个调用m_someObject.Dispose()的Dispose()方法,AContainer那么我将留下这些情况:
// Example One
AContainer …Run Code Online (Sandbox Code Playgroud)