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

本文讨论了抽象类型不应具有公共构造函数的设计原则,因为抽象类的构造函数只能被派生类调用,而不能直接实例化。建议将构造函数设为受保护的或避免声明为抽象类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象类型不应具有构造函数 

 

 

TypeName

AbstractTypesShouldNotHaveConstructors

CheckId

CA1012

Category

Microsoft.Design

Breaking Change

NonBreaking

原因

公共类型为抽象类型,并具有公共构造函数。

规则说明

抽象类型的构造函数只能由派生类型调用。由于公共构造函数用于创建类型的实例,但无法为抽象类型创建实例,因此具有公共构造函数的抽象类在设计上是错误的。

如何修复冲突

要修复与该规则的冲突,请将构造函数设为受保护的构造函数,或者不要将类型声明为抽象类型。

何时排除警告

不要排除与该规则有关的警告。

示例

下面的示例包含一个与该规则冲突的抽象类型以及一个可正确实现的抽象类型。

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.
      }
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值