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

2016-01-29 12:57 7 1 收藏

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

【 tulaoshi.com - ASP.NET 】

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.
}
}
}
引起的原因:一个公共抽象类型拥有一个公共的构造函数描述:构造函数被用来建立一个对象实例,但是你不能建立一个抽象类型的实例,抽象类型的构造函数就仅仅能够被它的继承类型使用。因此,为一个抽象类构造公共构造函数是一个错误的设计。修复:如果需要修复这个问题,可以声明这个构造函数为保护型,或者,声明这个类型不是一个抽象类型。

来源:http://www.tulaoshi.com/n/20160129/1488309.html

延伸阅读
标签: 护肤
化妆品没效果?都是错误使用惹的祸! 针对洗面奶可以分为泡沫型和无泡沫型。泡沫型的洗面奶需要在充分的起泡后将泡沫涂抹于面部进行按摩。加入适量的水打圈轻轻按摩会出现丰富的泡沫,这类产品中产生的泡沫会自带按摩作用。泡沫类的洗面奶清洁能力强,适合油性肌肤。无泡沫型的洗面奶在使用的时候需要先将洗面奶在手心乳化后再分点在面部按摩...
标签: 孩子
应不应该给予孩子物质奖励 为了让孩子好好学习,父母往往会想尽各种办法。他们经常会许诺孩子如果期末考试分数排名班级前十名,爸爸奖励你一部新款手机、妈妈带你去欧洲旅游……相信这个暑期会有不少家长忙着兑现对孩子的许诺。但是,也有一些家长因为这样或那样的原因,对自己做出的许诺无法兑现。近日,编辑部接到了数位家长打...
标签: Web开发
面向对象程序通过类的分层结构构建起来. 在单重继承语言如PHP中, 类的继承是树状的. 一个根类有一个或更多的子类,再从每个子类继承出一个或更多下一级子类. 当然,可能存在多个根类,用来实现不同的功能. 在一个良好设计的体系中,每个根类都应该有一个有用的接口, 可以被应用代码所使用. 如果我们的应用代码被设计成与根类一起工作,那么它也可...
标签: Java JAVA基础
abstractclass和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstractclass和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstractclass和interface的选择显得比较随意。其实,两者之间还是有很...
标签: Web开发
当问题非常简单时 当它可能产生其大无比的文件时 当应用程序是“一次性的”时 当需要使用 Unix 面向行的文本处理工具时 涉及使用 XML 来进行程序间通信时,有探讨的余地。但当涉及人机通信,如编程语言或配置文件时,XML 可能提供了最不自然的人机界面。 我的论点归结人与计算机硬件之间的一个问题。人类擅长处理隐含的结构,而计算机希望...

经验教程

71

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部