有一个 IDisposable 包含记录器的字段:
class DoesNotDisposeMember : IDisposable {
public IDisposable Logger { get; set; }
public void Dispose ()
{
logger = null;
}
}
宪兵报告说有一个DisposableFieldsShouldBeDisposedRule-Defect,但我不想处置记录器。
谁能帮我?
有一个 IDisposable 包含记录器的字段:
class DoesNotDisposeMember : IDisposable {
public IDisposable Logger { get; set; }
public void Dispose ()
{
logger = null;
}
}
宪兵报告说有一个DisposableFieldsShouldBeDisposedRule-Defect,但我不想处置记录器。
谁能帮我?
设置你不想处理它的原因;如果您不想处理它,那么您可能不应该将它存储在IDisposable
成员中。该接口的唯一真正目的是表示/启用该项目正在处置。
如果它是一个日志记录对象,是否没有另一个可以使用的通用基接口/类,例如从Stream
or派生的StreamWriter
?
既然我已经写了,我当然觉得这仍然包含IDisposable
在层次结构中......我想这让我们回到我说过我会搁置的内容:
你为什么要在这里设置一个你不打算处理的变量?如果您要在其他地方处理它,您可能也应该在那里使用它。包装 logger 对象的代码应该处理它的所有功能,包括将单独的接口暴露给启用日志记录的模型/业务对象。
基本上,如果您将日志记录封装在另一个对象中,那么您不应该引用该对象之外的内部日志记录流对象。如果您没有在其他地方封装日志记录,那么这个类应该适当地处理它。