c# - 附加到派生类中的字符串(在基类中创建)
问题描述
所以这是一个相当具体的问题。
假设我有一组类,它们都生成不同的字符串。它们之间唯一的共同点是它们在字符串中需要相同的“标题”。
我决定创建一个基类来生成它们都派生的标头。
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;
}
}
解决方案
使其工作的一种方法是在基类中使用私有字段:
internal abstract class StringBase
{
private string headerString = "header";
public virtual string WriteString(String input=null)
{
return String.IsNullOrEmpty(input) ? headerString : headerString + input;
}
}
然后您可以通过传入参数从派生类中调用该方法。
推荐阅读
- node.js - Mongoose 虚拟模式 .find 未定义的返回值
- r - 在 dplyr 中汇总并为没有值的类别插入 0
- html - 带有箭头的 JQuery 图像滑块
- javascript - 如何为 HTML 元素录制视频?
- mongoose - Mongoose 中间件可以填充然后对引用数组进行排序吗?
- java - 在错误的情况下正确关闭构造函数和关闭方法中的资源
- javascript - 页面重新加载后保留购物车的价值
- spring-boot - 如何使用 Spring Security 在 JSF 中使用令牌进行自定义登录
- wifi - FEDORA 33 工作站中的 WIFI 出现问题
- c - 什么是长段(片段)?#pragma section (".rdata$T", long, read)