C# 如何通过虚拟类获取基类
我正在学习C#类接口,我被卡住了 这是我目前的界面C# 如何通过虚拟类获取基类,c#,interface,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 SomeDevic
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类。我想让我的代码中有一个称为“设备”的设备,而不知道它是什么类型。每个被分类的人都有相似的成员。因此,我不需要制作3个类,而是想要一个类,每种类型有3个接口
现在我的问题是如何构建它。通常,对于这些类中的任何一个,您都可以执行一个简单的新操作,如
操纵杆设备=新操纵杆(directInput,deviceGuid);
但就我而言,我需要做一个
device=(vRogage)DeviceFactory.Create(类型、directInput、deviceGuid);
但正如你们可以清楚地看到的那个样,这个设备从来并没有真正制造出来过。Vmogage从不返回新的操纵杆。这就是我丢失的原因。C#不支持多重继承,因此不能从多个类派生
在您的情况下,您需要让您的类封装操纵杆和鼠标类,这将允许您使用正常的工厂方法。然后,您可以创建并实现一个
IJoystick
或IMouse
接口以及您的AgnosticDevice
类,如果这能让您的生活更简单的话。C确实支持多个接口,这在很多情况下已经足够好了。@Nate是的-我编辑了它,但在这种情况下,OP试图将一个第三方(DirectX)类与它们自己的类一起子类化。我听从了你的建议,但语法不太正确。我做了研究,但是找到一个使用第三方类的例子并不容易。有谁能给出一个代码示例来帮助我理解语法吗?@SeanGreen有关C#中封装的许多示例,请参阅: