因为我有一个抽象基类说 MyBase。它具有带有字符串值的参数化构造函数,它具有抽象方法调用。我也有一个孩子班说MyChild。它没有任何构造函数,只有一个具有公共方法,我想将基类的参数化构造函数调用到子类上。
请给我相应的解决方案...
因为我有一个抽象基类说 MyBase。它具有带有字符串值的参数化构造函数,它具有抽象方法调用。我也有一个孩子班说MyChild。它没有任何构造函数,只有一个具有公共方法,我想将基类的参数化构造函数调用到子类上。
请给我相应的解决方案...
如果您没有在子类中指定构造函数,则将使用父类的构造函数。即您可以将您的 Child 类实例化为
Child child = new Child(initString);
如果未定义上述子构造函数,则只会传播(调用)具有相同签名的父构造函数。
我真的不知道你在这里问什么,所以我猜:
abstract class MyBase
{
protected MyBase(string foo) { }
}
class Child : MyBase
{
public Child(string foo)
: base(foo)
{ }
}
如果它不是构造的一部分,您将无法“调用”它,Child
因为您无法实例化抽象类。
没有任何背景很难帮助你,但我会尽力的。也许你可以做这样的事情:
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 建议的那样。