限制继承类中的构造函数

时间:2018-03-10 05:55:18

标签: c#

我有一个班级:

public class MyClass
{

}

我有一个案例,我不希望任何从类继承的人应该创建除默认构造函数之外的任何其他构造函数。

public class MyInheritedClass : MyClass
{

  MyInheritedClass(string name)
  {

  }
}

不应允许myInheritedClass(string name)。这可能吗?

1 个答案:

答案 0 :(得分:1)

您无法阻止类的使用者/继承者实现自己的构造函数。但是,您可以强制它们使用基类构造函数

也就是说,没有 Explicit Constructor 的类有一个默认的无参数构造函数。但是,如果使用参数并且没有 Paramterless Constructor 实现构造函数,则没有参数,您的类将无法实例化。

示例

public abstract class A 
{
    public A(string x) 
    {
    }
}

public class B : A 
{
    // If you don't add ": base(x)" 
    // your code won't compile, because A has a 
    // constructor with parameters
    public B(string x) : base(x)
    {
    }
}