1

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

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

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

4

1 回答 1

0

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

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

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

于 2010-06-10T23:42:56.480 回答