gpt4 book ai didi

c# - 如何通过我的虚拟类获得我的基类

转载 作者:行者123 更新时间:2023-11-30 22:08:38 25 4
gpt4 key购买 nike

我正在研究 C# 类接口(interface),但我被卡住了。

这是我目前的界面。

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
}
}

请理解我仍在学习,但我认为这接近我想要的。现在 Joystick、Mouse 和 Keyboard 是 Dirrect X 类。我想这样做,以便我可以在我的代码中拥有一个名为“设备”的设备,该设备与它的类型无关。这些类别中的每一个都有相似的成员。因此,我不想创建 3 个类,而是真正想要一个类,并且每种类型有 3 个接口(interface)。

现在我现在的问题是如何构造它。通常对于这些类中的任何一个,你都会做一个简单的 new like操纵杆设备 = 新操纵杆 (directInput, deviceGuid);但就我而言,我需要做一个device = (vJoystick)DeviceFactory.Create( type, directInput, deviceGuid );但正如您可以清楚地看到的那样,设备从未真正被制造出来。 vJoystick 永远不会返回新的 Joystick。这是我迷路了。

最佳答案

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

在您的情况下,您需要让您的类封装 Joystick 和 Mouse 类,这将允许您使用普通的工厂方法。然后,您可以创建并实现一个 IJoystickIMouse 接口(interface)以及您的 AgnosticDevice 类,如果这会让您的生活更简单的话。

关于c# - 如何通过我的虚拟类获得我的基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com