我想我有一个很常见的问题,但我真的可以想出一个解决方案。
想象一下这个类:
public class ListHandlerBase
{
public virtual void Add(object item)
{
// XXX
}
}
public class ListHandler : ListHandlerBase
{
List<object> ObjectList = new List<object>();
List<string> StringList = new List<string>();
List<int> IntList = new List<int>();
public override void Add(object item)
{
HandleAdd(item);
}
private void HandleAdd(object item)
{
ObjectList.Add(item);
}
private void HandleAdd(string item)
{
StringList.Add(item);
}
private void HandleAdd(int item)
{
IntList.Add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
它有一个 Add 方法接受非常通用的类型对象。然而,有几种方法可以处理对象,但只有“HandleAdd(object item)”会被调用,因为 item 是 object 类型的(即使它真的是一个字符串)。我想要某种虚拟/覆盖。
有一个丑陋的解决方案可能如下所示:
public void Add(object item) …Run Code Online (Sandbox Code Playgroud) c# ×1