我希望我的问题是合法的,因为我并不真正习惯所有的分层类结构。
我尝试封装一个类,为连接到设备的两个不同相机提供相同的功能。这些函数被认为在 DeviceObject 类中,而我想通过使用 Camera1 或 Camera2 的实例来访问这些函数。下面是一些可能不起作用的伪代码:
public class Camera1 : DeviceObject
{
public Generic.CameraSelect Camera { get; set; } = Generic.CameraSelect.CAM1;
}
public class Camera2 : DeviceObject
{
public Generic.CameraSelect Camera { get; set; } = Generic.CameraSelect.CAM2;
}
public class DeviceObject
{
public void SomeFunction()
{
HardwareDriver.Function(SelectedCamera);
}
}
我想要的是轻松访问依赖于相机类的 DeviceObject 的方法:
public void Method()
{
Camera1 Cam1 = New Camera1();
Camera2 Cam2 = New Camera2();
Cam1.SomeFunction();
Cam2.SomeFunction();
}
如果这是一个愚蠢的问题,我深表歉意,但经过 7 个小时的编程,我完全被困住了,不再想它了:)
更新:
我已经实现了 - 正如你们所有人所推荐的那样 - 一个抽象基类并将相机对象派生为基类的成员。到目前为止我不知道的是,可以将派生类转换为基类的类型。这对我来说绝对是新的,但帮了我一个战利品!与我的实现。
所以感谢所有帮助我而不让我下 hell 的人:)
最佳答案
为什么不使用抽象类?
public class Camera1 : Camera
{
public override Generic.CameraSelect CameraType { get; set; } = "CAM1";
}
public class Camera2 : Camera
{
public override Generic.CameraSelect CameraType { get; set; } = "CAM2";
}
public abstract class Camera
{
public abstract Generic.CameraSelect CameraType { get; set; }
public void SomeFunction()
{
HardwareDriver.Function(this);
}
}
关于c# - 如何合理实现类结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35086034/