如何通过我的虚拟类获取我的基类

时间:2014-03-03 17:47:04

标签: c# interface

我正在研究C#类接口而且我被卡住了。

这是我目前的界面。

public abstract class AgnosticDevice
{
    public abstract void SomeDeviceOperation();
}

public class vJoystick : AgnosticDevice, Joystick
{
    public vJoystick( DirectInput di, Guid g){}
    public override void SomeDeviceOperation()
    {
        /* Joystick operation */
    }
}

public class vMouse : AgnosticDevice, Mouse
{
    public vMouse( DirectInput di ){}
    public override void SomeDeviceOperation()
    {
        /* Mouse operation */
    }
}

public class vKeyboard : AgnosticDevice, Keyboard
{
    public vKeyboard( DirectInput di , Guid g){}
    public override void SomeDeviceOperation()
    {
        /* Keyboard operation */
    }
}

public class DeviceFactory
{
    public static AgnosticDevice Create( string type, DirectInput di, Guid g )
    {
        if ( type == "Mouse" )
        {
            return new vMouse( di);
        }
        if ( type == "Joystick" )
        {
            return new vJoystick( di, g);
        }
        if ( type == "Keyboard" )
        {
            return new vKeyboard( di, g);
        }
        return new vJoystick( di, g ); //default
    }
}

请理解我还在这里学习,但我认为这与我想要的很接近。现在,操纵杆,鼠标和键盘是Dirrect X类。我想做到这一点,以便我可以在我的代码中使用一个名为“device”的设备,它与它的类型无关。每个人都有类似的成员。因此,我不需要创建3个类,而是真正需要一个类,每种类型都有3个接口。

现在我当前的问题是如何构建它。通常使用这些类中的任何一个都可以做一个简单的新类 操纵杆装置=新操纵杆(directInput,deviceGuid); 但就我而言,我需要做一个 device =(vJoystick)DeviceFactory.Create(type,directInput,deviceGuid); 但是你可以清楚地看到设备从未真正制造过。 vJoystick永远不会返回新的操纵杆。这是我迷路了。

1 个答案:

答案 0 :(得分:3)

C#不支持多重继承,因此您无法从多个类派生。

在您的情况下,您需要让您的类封装Joystick和Mouse类,这样您就可以使用常规工厂方法。然后,您可以创建并实施IJoystickIMouse界面以及AgnosticDevice课程,如果这样可以让您的生活更简单。