题
有一个Idisposable,其中包含记录器的字段:
class DoesNotDisposeMember : IDisposable {
public IDisposable Logger { get; set; }
public void Dispose ()
{
logger = null;
}
}
Gendarme报告有一个 doposablefieldsshouldsposedrule-defect, ,但我不想处置记录仪。
谁能帮我?
解决方案
设定为什么您不想处置它;如果您不想处置它,则可能不应该将其存储在 IDisposable
会员,然后。该接口的唯一真正目的是表示/启用被处置的项目。
如果是记录对象,是否没有其他可以使用的常见基本接口/类,例如从 Stream
或者 StreamWriter
?
现在我已经写过了,当然会让我感到惊讶 IDisposable
在层次结构中...我想这使我们回到了我所说的我要搁置的内容:
您为什么在这里设置一个不打算处置的变量?如果您在其他地方处置它,则可能还应该在那里使用它。包装Logger对象的代码应处理其所有功能,包括将单独的接口公开到启用日志记录的模型/业务对象。
基本上,如果您将登录封装在另一个对象中,则不应引用该对象外部的内部记录流对象。如果您不封装在其他地方的记录,则此类应适当处理它。
不隶属于 StackOverflow