从子类调用的基于类的参数化构造函数的抽象类

时间:2012-07-27 10:35:13

标签: c#

因为我有一个抽象基类说MyBase。 它有参数化的构造函数和字符串值它有抽象方法调用。 我也有一个孩子说MyChild。 它没有任何构造函数只有一个有公共方法,我想把基类的参数化构造函数调用到子类。

请相应地给我解决方案......

2 个答案:

答案 0 :(得分:1)

如果未在子类中指定构造函数,则将使用父类的构造函数。即您可以将您的Child类实例化为

Child child = new Child(initString);

上面的Child构造函数(如果未定义)将只传播(调用)具有相同签名的父构造函数。

答案 1 :(得分:0)

没有任何背景很难帮助你,但我会尝试。 也许你可以这样做:

    abstract class MyBase
    {
      protected string _foo;
      protected MyBase(string foo) 
      {
         _foo = foo;
      }
    }

    class Child : MyBase
    {
        public Child()
        :base(string.Empty)
        {}

       public string Foo 
       {
        get 
        {
           return _foo;
         }
         set
         { 
           _foo = value;
          }
    }
}

因此,由于无法实例化抽象类,因此可以创建var obj = new Child() {Foo = "string"}; 但是,只有当MyBase只保留foo值时,您才可以选择此变体。 但是,如果您可以更改Child,最好添加一个构造函数,就像@Adam Houldsworth建议的那样。