[FxCop.设计规则]1. 抽象类不应该拥有构造函数

王朝c#·作者佚名  2006-12-17
宽屏版  字体: |||超大  

1. 抽象类不应该拥有构造函数原文引用:Abstract types should not have constructors

TypeName:

AbstractTypesShouldNotHaveConstructors

CheckId:

CA1012

Category:

Microsoft.Design

Message Level:

CriticalWarning

Certainty:

95%

Breaking Change:

NonBreaking

Cause: A public type is abstract and has a public constructor.

Rule Description

Constructors on abstract types can only be called by derived types. Because public constructors create instances of a type, and you cannot create instances of an abstract type, an abstract type with a public constructor is incorrectly designed.

How to Fix Violations

To fix a violation of this rule, either make the constructor protected, or do not declare the type as abstract.

When to Exclude Messages

Do not exclude a message from this rule.

Example Code

The following example contains an abstract type that violates this rule, and an abstract type that is correctly implemented.

[C#]

using System;

namespace DesignLibrary

{

public abstract class BadAbstractClassWithConstructor

{

// Violates rule: AbstractTypesShouldNotHaveConstructors.

public BadAbstractClassWithConstructor()

{

// Add constructor logic here.

}

}

public abstract class GoodAbstractClassWithConstructor

{

protected GoodAbstractClassWithConstructor()

{

// Add constructor logic here.

}

}

}

引起的原因:一个公共抽象类型拥有一个公共的构造函数

描述:构造函数被用来建立一个对象实例,但是你不能建立一个抽象类型的实例,抽象类型的构造函数就仅仅能够被它的继承类型使用。因此,为一个抽象类构造公共构造函数是一个错误的设计。

修复:如果需要修复这个问题,可以声明这个构造函数为保护型,或者,声明这个类型不是一个抽象类型。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有