更新:2007 年 11 月
| TypeName | AbstractTypesShouldNotHaveConstructors | 
| CheckId | CA1012 | 
| 类别 | Microsoft.Design | 
| 是否重大更改 | 否 | 
原因
公共类型为抽象类型,并具有公共构造函数。
规则说明
抽象类型的构造函数只能由派生类型调用。由于公共构造函数用于创建类型的实例,但无法为抽象类型创建实例,因此具有公共构造函数的抽象类在设计上是错误的。
如何修复冲突
要修复与该规则的冲突,请将构造函数设为受保护的构造函数,或者不要将类型声明为抽象类型。
何时禁止显示警告
不要禁止显示此规则发出的警告。抽象类型具有公共构造函数。
示例
下面的示例包含一个与此规则冲突的抽象类型。
Imports System     
Namespace Samples
    ' Violates this rule      
    Public MustInherit Class Book 
        Public Sub New()          
        End Sub 
    End Class 
End Namespace 
using System;
namespace Samples  
{   
    // Violates this rule      
    public abstract class Book      
    {          
        public Book()          
        {          
        }      
    } 
}
下面的示例通过将构造函数的可访问性从 public 更改为 protected 修复了前面的冲突。
Imports System     
Namespace Samples
    ' Violates this rule      
    Public MustInherit Class Book 
        Protected Sub New()          
        End Sub 
    End Class 
End Namespace 
using System;
namespace Samples  
{   
    // Violates this rule      
    public abstract class Book      
    {          
        protected Book()          
        {          
        }      
    } 
}