2016-04-11 9 views
0
using InstrumentA.Interop; 
using InstrumentB.Interop; 
using InstrumentC.Interop; 

namespace SomeProject 
{ 
    class Program 
    { 
     void InitializeInstruments() 
     { 
      //I want to be able to instantiate whatever driver I want: (just one of them) 
      InstrumentA.Interop.DriverA driver = new InstrumentA.Interop.DriverA(); 
      InstrumentB.Interop.DriverB driver = new InstrumentB.Interop.DriverB(); 
      InstrumentC.Interop.DriverC driver = new InstrumentC.Interop.DriverC(); 
      //or some instrumentD,E, F that users can choose to add. 

      driver.Initialize(); 
      driver.DoOtherStuffs(); 
     } 
    } 
} 

上記のコードからわかるように、私はどのクラスをインスタンス化するかを選択して、driverと名前を付けることができますか?異なる参照ファイルからオブジェクトを動的にインスタンス化する方法

+0

が、彼らは共通のインターフェースを共有していますか? – Rob

+0

@Robはい、そうです。 –

答えて

0

あなたは、このようなインターフェイス持っていると仮定:

public interface IDriver 
{ 
    void Initialize(); 
    void DoOtherStuffs(); 
} 

そして、すべての3人のドライバーは、このインタフェースを実装し、その後、次のように記述することができます:

void InitializeInstruments() 
{ 
    IDriver driver; 
    if (a == 1) 
     driver = new InstrumentA.Interop.DriverA(); 
    else if (a == 2) 
     driver = new InstrumentB.Interop.DriverB(); 
    else 
     driver = new InstrumentC.Interop.DriverC(); 

    driver.Initialize(); 
    driver.DoOtherStuffs(); 
}