我有使用 BaseClass 的旧代码,并且代码期望 customerid 是 int 类型。然后我需要创建一个新类 DerivedClass,它的行为非常类似于 BaseClass,但现在 customerid 需要是一个字符串。遗留代码无法修改,因此不需要测试。
如何使用继承(或任何其他方式)获得我想要的效果?
下面的 Linqpad 测试代码说明了我需要做什么。显然它不会编译,因为 DerivedClass 中的 customerid 需要是 int。我还需要一个名为 customerid 的字符串属性。它必须是该名称,因为其他代码将使用此类而不是 BaseClass 并期望相同的命名属性为字符串类型。
public class BaseClass
{
public virtual int customerid {get; set;}
public void printname()
{
customerid = 1;
customerid.Dump();
}
}
public class DerivedClass : BaseClass
{
public override string customerid {get; set;}
public void PrintCustomerID()
{
customerid = "jshwedeX";
customerid.Dump();
}
}
void Main()
{
DerivedClass dc = new DerivedClass();
dc.printname();
}