如何在我不想处理的字段上避免“DisposableFieldsShouldBeDisposedRule”缺陷?

时间:2010-12-27 12:40:31

标签: c# mono gendarme

有一个IDisposable,其中包含Logger的字段:

class DoesNotDisposeMember : IDisposable {
  public IDisposable Logger { get; set; }

  public void Dispose ()
  {
    logger = null;
  }
}

Gendarme报告说有DisposableFieldsShouldBeDisposedRule-Defect,但我不想丢弃记录器。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

设置一方为什么你不想处理它;如果您不想处理它,那么您可能不应该将其存储在IDisposable成员中。该界面的唯一真正目的是表示/启用该项目。

如果它是一个日志记录对象,是否没有其他可以使用的公共基本接口/类,例如派生自StreamStreamWriter的基本接口/类?

既然我已经写过了,那当然让我觉得这仍然包括IDisposable在层次结构中......我想我们会把它带回到我所说的我要放弃的地方:

为什么你在这里设置一个你不打算处理的变量?如果你在其他地方处理它,你可能也应该在那里使用它。包装记录器对象的代码应该处理它的所有功能,包括将单独的接口暴露给启用日志记录的模型/业务对象。

基本上,如果要将日志记录封装在另一个对象中,则不应该引用该对象之外的内部日志记录流对象。如果你没有在其他地方封装日志记录,那么这个类应该适当地处理它。