[英]Use derived class property in base class constructor
在以下代码中,我需要Base
类构造函数才能使用Derived
类属性ServiceUrl
。 我无法将ServiceUrl
定义为static,因为其值是根据Derived
类构造函数参数计算得出的。 我无法将ServiceUrl
作为构造函数参数传递给Base
类,因为计算不像所说明的那么简单,它可能需要访问Base
/ Derived
类中的其他字段。
有什么最好的出路建议吗? 我有权对Base
和Derived
类结构进行任何更改以达到目的。
abstract class Base
{
public abstract string ServiceUrl { get; }
public Base()
{
Console.WriteLine(ServiceUrl);
}
}
class Derived : Base
{
public override string ServiceUrl { get; private set; }
public Derived(string rootUrl) : base()
{
ServiceUrl = rootUrl + "/service";
}
}
基类构造函数将始终在派生类构造函数之前被调用。 因此,有两种解决方案:
在基类的构造函数中使用参数:
abstract class Base { public string ServiceUrl { get; } public Base(string serviceUrl) { ServiceUrl = serviceUrl; Console.WriteLine(ServiceUrl); } } class Derived : Base { public Derived(string rootUrl) : base(rootUrl + "/service") { } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.