c# - 如何合理实现类结构

标签 c#

我希望我的问题是合法的,因为我并不真正习惯所有的分层类结构。

我尝试封装一个类,为连接到设备的两个不同相机提供相同的功能。这些函数被认为在 DeviceObject 类中,而我想通过使用 Camera1Camera2 的实例来访问这些函数。下面是一些可能不起作用的伪代码:

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/

相关文章:

C# - 如何使方法仅对继承方法基类的类可见

c# - 如何使用登录用户的 ASP.NET C# 获取 Mac 和 IP 地址

c# - 后台文件传输问题

c# - 编写 C++ .dll 并访问它们 Unity-3D

javascript - 如何通过 jquery 检查启用链接按钮?

c# - 写入 dxf 或 dwg 格式?

c# - 最小化时 Windows 窗体应用程序更新

c# - ServiceStack OrmLite 命令超时

c# - 具有未知数据类型的 LINQ 的 .Union()

c# - 标签文本每秒刷新一次