基础类
class Drawer
{
public abstract void Draw<T>(T type);
}
派生类#1
class ADrawer : Drawer
{
public override void Draw<T>(List<T> list)
{
foreach (var a in list)
{
DrawA(a);
}
}
public void DrawA(Agent a)
{
//draw code here
}
}
derived class #2
class AnotherDrawer : Drawer
{
public override void Draw<T>(T number)
{
if (number == 1)
{
//draw code
}
}
}
错误在于#1派生类中:“没有合适的方法可以重载”。
我在基类中是否应该同时使用“virtual”和“abstract”?
我该如何设置基类参数类型以允许派生类中有各种不同类型的参数?
Draw<T>(T item)
和DrawMany<T>(IEnumerable<T> items)
。就像List<T>
有Add
和AddRange
方法一样;对单个物品进行操作和对多个物品进行操作是两个不同的操作,因此需要使用两个不同的方法。 - Eric Lippert