当前位置: 中国教程学习网 > 教程学院 > 网站设计与开发 > ASP.net >

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

作者:     来源:     时间:2006-05-22

...
  • 关键字:
  • 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.
    }
    }
    }
    引起的原因:一个公共抽象类型拥有一个公共的构造函数描述:构造函数被用来建立一个对象实例,但是你不能建立一个抽象类型的实例,抽象类型的构造函数就仅仅能够被它的继承类型使用。因此,为一个抽象类构造公共构造函数是一个错误的设计。修复:如果需要修复这个问题,可以声明这个构造函数为保护型,或者,声明这个类型不是一个抽象类型。
    关于我们 | 客服中心 | 商务合作 | 网站地图 | 友情连接 | 联系我们 | RSS订阅
    Copyright © 2002-2009 765P.com All Rights Reserved
    765P教程网 版权所有 鄂ICP备07500079号