0

http://msdn.microsoft.com/en-us/library/ms182126.aspx

Microsoft 设计指南说抽象类型不应该有构造函数。

对我来说,大多数派生自抽象类的类将具有与其基类非常相似(如果不相同)的构造函数,这似乎是非常合理的。

如果除了遵循 DRY 之外没有其他原因,那么使用带有构造函数的抽象类是否真的很糟糕,如果这意味着你所有的派生类现在只需要放置

    public DerivedClass()
        : base()
    {

    }

或者有什么我想念的吗?

4

1 回答 1

1

没有什么可以阻止您这样做,但根据定义,抽象类是那些无法实例化的类。因此,如果您创建一个构造函数,使其受保护,而不是公开,否则您的类将不符合抽象的定义。

您提到的指南进一步解释了:

原因:公共类型是抽象的并且具有公共构造函数。

规则说明:抽象类型的构造函数只能被派生类型调用。因为公共构造函数创建类型的实例,而您不能创建抽象类型的实例,所以具有公共构造函数的抽象类型设计不正确。

如何修复违规:要修复违反此规则的行为,要么使构造函数受保护,要么不将类型声明为抽象类型。

于 2013-10-11T20:29:28.957 回答