在包含UserControl的WebProject上运行FxCop将导致每个标签( ServerControl,TextBox,...)出现CA2000警告(Call System.IDisposable.Dispose on object)在那个UserControl中。
我理解为什么会发生这种情况。
用PlaceHolder替换“有问题的”ServerControls,然后在代码中添加控件(使用Using...End)可能是绕过这一问题的一种方法,但它并不总是可行的。
但是,如果他们不是‘洁食’,为什么有ServerControls,你可以在你的ascx/aspx放在第一位?
我是不是漏掉了什么?
如果像我的例子一样,你继承了一个相当复杂的UserControls集合,我现在是不是要把每个“违规”控件都添加到GlobalSupperssions文件中(这是很多让人麻木的右击)?
我不想隐藏所有的CA2000警告,因为修复它们很有意义,但对于UserControls中的ServerControls则不然。
发布于 2010-06-11 07:42:56
Hmya,每个人都非常喜欢一个工具,它可以告诉他们忘记调用Dispose()。问题是:这样的工具真的很难实现。您正在讨论的特定警告现在已被禁用并重新启用了几次。
显然,你得到的警告是无稽之谈,UserControl已经知道如何正确地处理它的成员控件。这不是自动化工具可以轻易检测到的。dispose调用与构造函数调用相去甚远,埋藏在.NET框架代码中,混合抛出了几个虚拟方法和事件处理程序。
要真正评估这些警告,您必须切换到另一个工具:两耳之间的工具。
https://stackoverflow.com/questions/3019260
复制相似问题