我是一个主要与嵌入式设备(使用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