0

有一个 IDisposable 包含记录器的字段:

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

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

宪兵报告说有一个DisposableFieldsShouldBeDisposedRule-Defect,但我不想处置记录器。

谁能帮我?

4

1 回答 1

2

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

如果它是一个日志记录对象,是否没有另一个可以使用的通用基接口/类,例如从Streamor派生的StreamWriter

既然我已经写了,我当然觉得这仍然包含IDisposable在层次结构中......我想这让我们回到我说过我会搁置的内容:

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

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

于 2010-12-27T12:44:37.753 回答