我有 2 个班级管理 2 个不同品牌的网络摄像头的运营,每个班级都有完全相同的公共成员,但私人成员却截然不同。其中一个或另一个停靠在 Pane 类中(哪种类型在运行时决定)。Pane 类提供额外的显示功能以及对停靠的任何相机的控制。当应用程序实例化 Pane 类并指定要停靠的相机类型时,我希望 Pane 实例化正确的相机类,以便它可以调用该类。
此示例代码的最后一行说明了我的问题...相机没有 .Start() 方法,因为相机的类型是 Object ,而不是两种 CameraType 类型之一。
如何让“对象相机”在设计时公开分配的类的成员,以便 Pane.Start() 最终调用在 switch/case 块中分配的类的 Start() 方法?
谢谢你的时间,戴夫
public class CameraType1 //not to be used directly
{
public CameraType1()
{
Stuff specific to this type of camera
}
public void Start()
{
// Stuff specific to starting a stream to this type
}
}
public class CameraType2 //not to be used directly
{
public CameraType2()
{
// Stuff specific to this type of camera
}
public void Start()
{
// Stuff specific to starting a stream to this type
}
}
public class Pane
{
object camera;
public Pane(string CameraTypeToDeploy)
{
switch (CameraTypeToDeploy)
{
case "Type1":
camera = new CameraType1();
break;
case "Type2":
camera = new CameraType2();
break;
}
}
public void Start()
{
camera.Start(); //wrong... camera doesn't have a Start() method
}
}