我有一个类层次结构如下的库:
class Base {}
class A : Base {}
class B : Base {}
现在我想根据对象的类型(无论是 A 还是 B)做不同的事情。所以我决定去实现双重调度以避免检查类型。
class ClientOfLibrary {
public DoStuff(Base anObject)
{
anObject.MakeMeDoStuff(this);
}
private void DoStuffForanA(A anA);
private void DoStuffForaB(B aB);
}
现在实现双重分派的规范方法是将方法MakeMeDoStuff
抽象Base
化并在具体类中重载它。但是请记住Base
,A
并且B
在图书馆中,所以我不能自由地添加dos方法。
添加方法扩展不起作用,因为无法添加抽象扩展。
有什么建议吗?