【发布时间】:2014-09-18 12:27:16
【问题描述】:
我有一个类层次结构如下的库:
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 在库中,所以我不能随意添加dos 方法。
添加方法扩展不起作用,因为没有办法添加抽象扩展。
有什么建议吗?
【问题讨论】:
-
除了在自己的 MyBase 中复制 Base、A、B 代码,MyA 扩展 MyBase ,MyB 扩展 MyBase 我真的没有看到其他选择。我记得当我使用 c# 时,我们不得不做这样的事情
标签: c# double-dispatch