我继承了我工作的大型遗留 ASP.NET 应用程序,我们公司希望我们使用 FxCop 并修复所有主要的违规行为。目前似乎很流行的一条规则如下:
CA1405: COM 可见类型基类型应该是 COM 可见的
看来我们应用程序中的每个 ASP.NET 页面/控件都违反了此规则。起初我不确定为什么,但最终我意识到这是由于以下继承链:
System.IDisposable → System.Web.UI.Control → System.Web.UI.TemplateControl → System.Web.UI.Page
我也意识到IDisposable
定义为:
[ComVisible(true)]
public interface IDisposable
{
void Dispose();
}
总结一下:所有 ASP.NET 页面/控件都继承自IDisposable
,并IDisposable
具有该[ComVisible(true)]
属性,这意味着所有页面/控件都将不符合此规则。
这伤害了我们,因为我们的应用程序有数千个页面和控件,因此有数千个违规行为。禁用规则不是一种选择,因为我们有一套“公司标准”的 FxCop 规则。似乎 FxCop 想让我们检查一下并将这个属性放在我们应用程序的每个页面上,我真的不感兴趣。
我的问题是,为什么首先IDisposable
要有[ComVisible(true)]
属性?