【发布时间】:2011-01-16 22:51:35
【问题描述】:
我正在尝试将问题分解为更简单的描述。
我正在使用一个外部类库,它公开了 4 个基类,它们都非常相似,有时是相互派生的。
在执行期间,我在几个委托函数上被回调,它们都携带一个“对象发送者”,其中包含 4 个基类之一的初始对象,之前在 API 函数上调用过。
示例(或多或少的伪代码):
classA oA = new classA();
oA.API(callbackA);
稍后调用回调,将 oA 作为“发送者”。
void callbackA(object Sender) {
classA oA = (classA)Sender;
oA.API2(xxx);
....
}
上述方法效果很好。现在我想把它扩展到剩下的 3 个类。因为它们在回调中的处理相当相同,所以我不想将代码再复制 3 次,而是让 callbackA 准备好处理 classB、classC 和 classD 类型的 Sender。
我无法在任何有用的解决方案中实现这一点。有人能帮帮我吗?
更新:因为我确实得到了很多指向“是”的答案 - “是”不是解决方案。我需要一个变量,能够有多种类型。动态投射?
【问题讨论】:
-
这些类有共同的接口吗?
-
至少他们声称,B 是 A 的后代......
标签: c# function variables types