我正在开发C#应用程序时使用NDepend。我违反了一条规则,指出“带有一次性实例字段的类型必须是一次性的”。在这种情况下我应该真的实施IDisposable吗?
我知道你其实应该做的,当你做这样的事情:
class SomeClass : IDisposable
{
private Control _someControl; // implements IDisposable
public SomeClass()
{
_someControl = new RandomControl();
}
// ...
}
不过,我得到这样一个处理程序类违规行为:
public class SomeHandler
{
private Control _someControl; // implements IDisposable
public SomeHandler(Control control)
{
_someControl = control;
}
public void SomeMethod()
{
DoSomethingWith(_someControl);
}
// ...
}
的处理对象是应该和控制一样长。在这种情况下我应该真的实施IDisposable吗?在所有情况下,处理程序类不应负责处理存储的控件(而是首先创建控件的类)。
重要的问题是谁拥有一次性物品。它是否授予'SomeHandler'来拥有,或者仅仅是参考?如果第一个,那么是的,你应该实现IDisposable。如果后者,那么没有。 –