我是一個主要與嵌入式設備(使用C和程序集編程)一起工作的開發人員。我的C#和麪向對象的知識是非常有限的(雖然我可以通過它在必要時通過它)。我有五個通過USB與PC連接的設備。 PC進行一些計算並將結果發送到設備。對每個設備執行相同的計算,但計算的結果是不同的。對於每個設備,我都有一個C#Windows Forms應用程序,它可以完成一些工作並將數據來回發送到設備。目前,我試圖將五個不同的應用程序合併爲一個,以便我們可以輕鬆地進行更改,輕鬆添加新設備,並擁有標準的用戶界面。我的問題是,我不完全知道這樣做的最佳方式,因爲我不知道在運行時間之前將使用哪個設備。我試圖避免一堆if語句,我希望能夠將每個設備放在一個單獨的文件中。這是我正在談論的一些psudo代碼。如何實現許多具有相同方法的類來完成不同的事情?
class Device //This is what EVERY device can do
{
...
DoWork1();
DoWork2();
DoWork3();
...
}
class Device1
{
...
DoWork1(); //This is how the work is done for this device
DoWork2();
DoWork3();
...
}
class Device2
{
...
DoWork1(); //This is how the work is done for this device (not the same way as Device1)
DoWork2();
DoWork3();
}
public partial class frmMain : Form
{
private (some kind of object or something) CurrentDevice;
public frmMain()
{
...
//Determine what device (could be one of five) is currently being used
CurrentDevice = (which device is currently being used)
//Could be CurrentDevice = new Device1();
}
}
private void Button1_Click()
{
CurrentDevice.DoWork1(); //But this could be Device1.DoWork1() or Device2.DoWork1(), depending on what device is currently being used (which was determined in the frmMain constructor)
}
我真的不知道,但我想我可以用一個接口或可能繼承設備類的Device1的類和重載的方法...但我不知道我會怎樣有一種通用的方式來表示CurrentDevice.DoWork1(),因爲CurrentDevice可能是Device1或Device2。
任何想法將不勝感激。我在Windows XP SP3和Windows 7上使用.NET 3.5的Visual Studio 2008.
我希望我能夠很好地描述問題。如果沒有,或者如果我沒有提到我應該的,請告訴我。我是新來的stackoverflow和C#。
謝謝
邁克爾
我想感謝大家的幫助和建議。我決定採用西西弗斯提供的解決方案,因爲它適合我目前的應用。儘管每個人都有很好的意見,但我感謝你們。 :) – Michael 2011-04-30 00:30:39