我正在研究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永远不会返回新的操纵杆。这是我迷路了。
答案 0 :(得分:3)
C#不支持多重继承,因此您无法从多个类派生。
在您的情况下,您需要让您的类封装Joystick和Mouse类,这样您就可以使用常规工厂方法。然后,您可以创建并实施IJoystick
或IMouse
界面以及AgnosticDevice
课程,如果这样可以让您的生活更简单。