【发布时间】:2013-04-11 21:54:43
【问题描述】:
我已经阅读了几个类似的问题,但似乎没有一个可以解决我面临的问题。典型的答案是强制转换为派生类,但我不能,因为我不知道派生类的类型。
这是我的例子:
class WireLessDevice { // base class
void websocket.parsemessage(); // inserts data into the wireless device object
}
class WiFi : WireLessDevice { // derived class
GPSLoc Loc;
}
无线设备也可以派生成蓝牙、Wi-Max、蜂窝等设备,因此我不知道哪种类型的无线设备会接收数据。
当基类的 websocket 收到 GPS 数据包时,我需要更新派生设备的位置。
我想也许可以通过队列发送消息或创建事件处理程序并在事件参数中发送位置,但当数据保留在类中时,这些似乎有点笨拙。
语言中是否有内置的东西可以让我在不知道类型的情况下从基类调用派生设备?
【问题讨论】:
-
看看装饰图案。您的问题似乎是您的错误设计。
-
不需要装饰器...看看抽象或虚拟方法...
标签: c# derived-class base-class