CA1012:抽象型別不應具有建構函式
型別名稱 |
AbstractTypesShouldNotHaveConstructors |
CheckId |
CA1012 |
分類 |
Microsoft.Design |
中斷變更 |
中斷 |
原因
公用 (Public) 型別為抽象的且具有公用建構函式。
規則描述
只有衍生型別 (Derived Type) 可以呼叫抽象型別上的建構函式。 因為公用建構函式會建立型別的執行個體,而且您無法建立抽象型別的執行個體,因此具有公用建構函式的抽象型別設計不正確。
如何修正違規
若要修正此規則的違規情形,請使建構函式受到保護,或者勿將型別宣告為抽象。
隱藏警告的時機
請勿隱藏此規則的警告。 抽象型別具有公用建構函式。
範例
下列範例包含違反此規則的抽象型別。
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()
{
}
}
}