【发布时间】:2018-10-12 07:50:49
【问题描述】:
所以这是一个相当具体的问题。
假设我有一组类,它们都生成不同的字符串。它们之间唯一的共同点是它们在字符串中需要相同的“标题”。
我决定创建一个基类来生成标头,它们都派生自该标头。
internal abstract class StringBase
{
public virtual string WriteString()
{
var headerString = "header";
return headerString;
}
}
现在是一个派生类,它必须包含标题,还要添加自己的后续字符串。
internal class DerivedString : StringBase
{
public override string WriteString()
{
var derivedString = // How would I best add the header and append more to it?
return derivedString;
}
}
像这样覆盖它显然会覆盖基础WriteString() 所做的任何事情,那么我如何确保我得到它?会不会像在基础中添加一个非虚拟方法,然后以标头字符串作为参数调用虚拟方法?
internal abstract class StringBase
{
public void WriteHeader()
{
var headerString = "header";
WriteString(headerString);
}
public virtual string WriteString(string headerString)
{
var derivedString = headerString.Append("whateverString");
return string.empty;
}
}
internal class DerivedString : StringBase
{
public override string WriteString(string headerString)
{
var derivedString = headerString.Append("whateverString");
return derivedString;
}
}
【问题讨论】:
标签: c# inheritance overriding