-3

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

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

4

3 回答 3

1

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

Child child = new Child(initString);

如果未定义上述子构造函数,则只会传播(调用)具有相同签名的父构造函数。

于 2012-07-27T10:45:00.463 回答
1

我真的不知道你在这里问什么,所以我猜:

abstract class MyBase
{
    protected MyBase(string foo) { }
}

class Child : MyBase
{
    public Child(string foo)
        : base(foo) 
    { }
}

如果它不是构造的一部分,您将无法“调用”它,Child因为您无法实例化抽象类。

于 2012-07-27T10:37:52.593 回答
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 建议的那样。

于 2012-07-27T10:44:42.960 回答