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