私には2つの異なるブランドのネットカムの運用を管理する2つのクラスがあり、それぞれがまったく同じパブリックメンバーを持っていますが、プライベートメンバーは大きく異なります。それらのいずれかは、Paneクラス(実行時に決定されるタイプ)内にドッキングされます。Paneクラスは、追加の表示機能に加えて、ドッキングされているカメラの制御を提供します。アプリケーションがPaneクラスをインスタンス化し、ドッキングするカメラのタイプを指定する場合、Paneに適切なカメラクラスをインスタンス化させて、そのクラスを呼び出せるようにします。
私の問題は、このサンプルコードの最後の行に示されています...カメラは2つのCameraTypeタイプのいずれでもないObjectタイプであるため、カメラには.Start()メソッドがありません。
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
}
}