【问题标题】:FxCop CA2000 Warning in UserControls用户控件中的 FxCop CA2000 警告
【发布时间】:2011-03-02 10:43:54
【问题描述】:

在包含 UserControl 的 WebProject 上运行 FxCop 将导致该 UserControl 中的每个 ServerControl(标签、文本框、...)的 CA2000 警告(在对象上调用 System.IDisposable.Dispose)。

我明白为什么会发生这种情况。
用 PlaceHolder 替换“有问题的”ServerControls,然后在代码中添加控件(使用...结束使用)可能是一种解决方法,但这并不总是一种选择。
但是,如果它们是不是 'kosher' 为什么有 ServerControls 你可以放在你的 ascx/aspx 中?
我错过了什么吗?

如果像我的情况一样,您继承了大量相当复杂的用户控件集合,我现在是否将每个“有问题的”控件添加到 GlobalSupperssions 文件中(右键单击会让人麻木)?
我愿意不想抑制所有 CA2000 警告,因为修复它们非常有意义,但对于 UserControls 中的 ServerControls 则不然。

【问题讨论】:

  • 我可能遗漏了一些东西,但你不会重写 dispose(好吧,我猜是 dispose(bool))并让它处理包含在你的用户控件中的服务器控件吗?如果您没有将处理“级联”到树下,警告似乎是有道理的

标签: .net fxcop servercontrols


【解决方案1】:

Hmya,每个人真的都喜欢一个可以告诉他们忘记调用 Dispose() 的工具。问题是:这样的工具真的很难实现。您所说的特定警告现在被禁用并重新启用了几次。

显然您收到的警告是无稽之谈,UserControl 已经知道如何正确处置其成员控件。这不是自动化工具可以轻松检测到的东西。 dispose 调用与构造函数调用相距一百万英里,隐藏在 .NET 框架代码中,其中包含几个虚拟方法和事件处理程序。

要真正评估这些警告,您必须切换到另一种工具:您耳朵之间的那个。

【讨论】:

  • 谢谢,你几乎确认了我耳朵之间的东西,我想这就是我需要的。
猜你喜欢
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多