如何解决调试时强制Dispose
| 我知道这不是标准做法,但是执行以下操作是否有任何弊端或更好的选择?我只想确保代码使用正确,.NET不会为您做任何事情来确保它。public class MyClass : IDisposable
public void Dispose()
{
// Some managed shutdown logic...
GC.SuppressFinalize(this);
}
#if DEBUG
// Why is ConditionalAttribute not allowed if you can still achieve this with compiler directives?
// [Conditional(\"DEBUG\")]
~SFtpClient()
{
Debug.Fail(\"This class is IDisposable and should be wrapped by using {}\");
}
#endif
}
解决方法
对我来说,这很好,因为该条件可以防止在RELEASE构建中使用空的终结器而不必要的终结成本。可能还要在GC.SupressFinalize周围添加#if DEBUG。
[Conditional(\“ DEBUG \”)]告诉编译器不要调用该方法,但是该方法仍然存在。无论如何,您无法编译调用Finalize()方法。 GC终结器不会检查该属性。
, 使用FxCop并注意CA2000:在失去作用域之前处置对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。