Tag: double dispatch

如何使用扩展构建双重调度

我有一个具有类的层次结构的库如下: 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); } 现在实现双重调度的规范方法是在Base中使方法MakeMeDoStuff抽象并在具体类中重载它。 但请记住Base , A和B都在库中,所以我不能自由地添加do方法。 添加方法扩展无法工作,因为无法添加抽象扩展。 有什么建议吗?