2010-06-10 60 views
1

在包含UserControl的WebProject上运行FxCop将导致该用户控件中的每个ServerControl(Label,TextBox,...)出现CA2000警告(对象的Call System.IDisposable.Dispose)。用户控件中的FxCop CA2000警告

我明白为什么会发生这种情况。
使用PlaceHolder替换'违规'ServerControls,然后在代码中添加控件(使用... End Using)可能是一种解决方法,但它并不总是一种选择。
但是,如果他们不是'犹太人',为什么有ServerControls你可以放在你的ascx/aspx首先?
我错过了什么吗?

如果就像我的情况那样,您继承了相当复杂的UserControls的一个相当大的集合,现在是否将每个'违规'控件添加到GlobalSupperssions文件中(这是很多让人麻木的右键单击)?
我不想禁止所有CA2000警告,因为修复它们非常合理,但不适用于UserControls中的ServerControls。

+0

我可能错过了一些东西,但是你不会只是重写处置(好吧,处置(布尔)我猜)并让它处理你的usercontrol中包含的服务器控件?警告似乎是有道理的,如果你不'级联'树上的配置 – 2010-06-11 06:31:12

回答

0

Hmya,大家真的喜欢一个工具,会告诉他们,他们忘记调用Dispose()。问题是:这样的工具真的很难实现。您正在谈论的具体警告现在已被禁用并重新启用了几次。

显然,你得到的警告是无稽之谈,一个UserControl已经知道如何正确地处置其成员控件。这不仅仅是一个自动化工具可以轻易检测到的东西。这个dispose调用距离构造函数调用一百万英里,并且嵌入了.NET框架代码中,并且混合了几个虚拟方法和事件处理程序。

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

+0

谢谢,你几乎证实我的耳朵之间是什么,我猜是我所需要的。 – esjr 2010-06-12 12:58:04