2017-07-14 2 views
0

初心者の質問かもしれませんが、私は複数のベンダーのカメラとのインターフェイスになるアプリケーションを作成したいと思います。私は、実行時に、私は与えられたベンダーにそれを初期化することができるように、基本クラスになりますCameraクラスを書きたい:複数ベンダーのカメラアプリケーション

public class BaseClass 
{ 
public void Connect(){} 
public void Disconnect(){} 
// common methods for cameras 
} 

public class VendorXCamera: Camera, VendorX_SDK_object 
{} 
public class VendorYCamera: Camera, VendorY_SDK_object 
{} 

BaseClass c_cam; 
//choose Camera X or Y 
c_cam = new VendorXCamera(); 
c_cam.Connect(); 

は、今私は、私はそれを多重継承のためにこの方法を行うことができないことを知っていますC#の制限と私は離れてインターフェイスを取得しません。どのように正しい方法で行うべきですか?

+0

「私はインターフェイスから離れません」とはどういう意味ですか? – Trey

+0

実際にインターフェイスは@maxweのようなソリューションの一部になる –

答えて

1

異なるベンダのカメラの交換可能性は、インターフェイスICameraを実装することによって実現できます。任意のインターフェイスから継承することができますが、C#では1つのクラスからしか継承できないことに注意してください。

は、カメラの一般的な方法の実装を共有したい場合は、インターフェイス内で行うことはできませんが、このメソッドを含む基本クラスを作成する必要があります。その基本クラスの機能のいくつかは具体的なベンダsdkに依存するかもしれないので、いくつかの関数を抽象として宣言し、それらをベンダー固有の子クラスに実装することができます。そのため、VendorX_SDK_objectとVendorY_SDK_objectを継承してはいけませんが、それを子クラスの属性にする必要があります。

public interface ICamera{ 
    void Connect(); 
    void Disconnect(); 
} 

abstract class CameraBase:ICamera 
{ 
    protected abstract void OpenStream(); 
    protected abstract void CloseStream(); 

    public void Connect(){ 
     Debug.WriteLine("connecting"); 
     OpenStream(); 
     Debug.WriteLine("connected"); 
    } 
    public void Disconnect(){ 
     Debug.WriteLine("connecting"); 
     CloseStream(); 
     Debug.WriteLine("connected"); 
    } 
} 

class VendorXCamera: CameraBase 
{ 
    private VendorX_SDK_object vendorx_sdk_object; 

    protected override void OpenStream(){ 
     vendorx_sdk_object.OpenStream(..); 
    } 
    protected override void CloseStream(){ 
     vendorx_sdk_object.CloseStream(..); 
    } 

} 

class VendorYCamera: CameraBase 
{ 
    private VendorY_SDK_object vendory_sdk_object; 

    protected override void OpenStream(){ 
     vendory_sdk_object.OpenStream(..); 
    } 
    protected override void CloseStream(){ 
     vendory_sdk_object.CloseStream(..); 
    } 

} 
関連する問題