如何从基类调用派生类方法?

Cra*_*rTV 18 c# base-class derived-class

我已经阅读了几个类似的问题,但似乎没有解决我面临的问题.典型的答案是作为派生类进行转换,但我不能因为我不知道派生类类型.

这是我的例子:

class WireLessDevice { // base class
    void websocket.parsemessage(); // inserts data into the wireless device object
}

class WiFi : WireLessDevice { // derived class
    GPSLoc Loc;
}
Run Code Online (Sandbox Code Playgroud)

还可以导出无线设备以制作蓝牙,Wi-Max,蜂窝等设备,因此我不知道哪种类型的无线设备将接收数据.

当在基类中的websocket上接收到GPS数据包时,我需要更新派生设备的位置.

我想或许可以通过队列发送消息或创建事件处理程序并在事件参数中发送位置,但是当数据停留在类中时,这些看起来有点笨拙.

是否有内置于该语言中的内容可以让我在不知道类型的情况下从基类调用我的派生设备?

ome*_*fer 34

正确的方法是在基类中添加方法DoSomeMagic(),使用默认实现或抽象.派生类应该覆盖它来做它的魔力.

这样的事情可能是:

public class WireLessDevice
{ // base class
    protected virtual void ParseMessage()
    {
        // Do common stuff in here
    }
}

public class WiFi : WireLessDevice
{ // derived class
    override void ParseMessage()
    {
        base.ParseMessage();//Call this if you need some operations from base impl.
        DoGPSStuff();
    }
    private void DoGPSStuff()
    {
        //some gps stuff
    }
    GPSLoc Loc;
}
Run Code Online (Sandbox Code Playgroud)