2012-02-02 7 views
1

私はVBマシン上に展開するマシン上のハードウェア(ビデオカメラ、モーターなど)とのインタフェース用のコントロールを含んでいますが、その機械の所在地(車で3時間)。私は自分のラップトップ上でプロジェクトを進めようとしていますが、明らかにコントロールはハードウェアと話すことができないので、あらゆる種類のエラーを生成します。開発/テスト用の制御コンポーネントの代用/無効化

コントロールタイプを自分のモックコントロールクラスに置き換え、実際のマシンとテストマシンのどちらをビルドするかを制御するために#if指示文を使用します。問題は、影響を受けるコードの一部がフォームデザイナで生成されたコードセクションにあることです。フォームデザイナーは自動的に自分の変更を "修正"しようとするので、手動でいつも元に戻す必要があり、フォームデザイナーの編集をバージョン管理にコミットしないように覚えてください。

私はこの問題を回避する方法や、別のアプローチをとって、私と(同僚の)同僚から離れて作業することができますか?

私はVB2005で作業しています。

答えて

0

Interfaceを使用してこの問題を解決できます。 IHardwareがインターフェースで、ビデオカメラなどから必要な機能をすべて定義しているとします。このインタフェースを別のクラスライブラリに実装します。このライブラリは、ハードウェアコードへのすべての呼び出しを処理します。これはWorkLibraryと言ってください。今すぐあなたのWorkLibraryへの呼び出しにこのインターフェイスを使用するフォームで。フォーム内

インタフェース

interface IHardware 
{ 
    void Load(); //Example 
} 

クラスライブラリ

class WorkClass : IHardware 
{ 
    public void Load() 
    { 
    } 
} 

Loadメソッドを呼び出すために、あなたが参照する必要はありません。このアプローチでは

//Fully Qualified name of the WorkClass, you can store this in config file also 
string provider = "WorkLibrary.WorkClass, WorkLibrary"; 
IHardware hardWare = Activator.CreateInstance(Type.GetType(provider, true)); 
hardWare.Load(); 

を行いますフォームプロジェクトでWorkLibrary.dllを入力すると、の中に入れるだけですまたはreleaseフォルダー。

この方法では、ハードウェア固有のものを完全に切り離すことができます。この

より利点は、あなたが別のハードウェアの異なるライブラリーを書くことができます

  • することができます。
  • これらのライブラリは、コンシューマから独立してテストできます。

希望します。

0

あなたが必要とするのは、Inversion Of Controlパターンを使用することです。これは、クラスが必要とするメソッドを定義するためのインタフェースを作成し、次に2つのオブジェクト(またはそれ以上)、すなわち「実際の」オブジェクトまたはモックを作成できるパターンです。

続きを読むhere

関連する問題