有一个Idisposable,其中包含记录器的字段:

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

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

Gendarme报告有一个 doposablefieldsshouldsposedrule-defect, ,但我不想处置记录仪。

谁能帮我?

有帮助吗?

解决方案

设定为什么您不想处置它;如果您不想处置它,则可能不应该将其存储在 IDisposable 会员,然后。该接口的唯一真正目的是表示/启用被处置的项目。

如果是记录对象,是否没有其他可以使用的常见基本接口/类,例如从 Stream 或者 StreamWriter?

现在我已经写过了,当然会让我感到惊讶 IDisposable 在层次结构中...我想这使我们回到了我所说的我要搁置的内容:

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

基本上,如果您将登录封装在另一个对象中,则不应引用该对象外部的内部记录流对象。如果您不封装在其他地方的记录,则此类应适当处理它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top