我的软件在启动之前连接了多个设备。我必须确保这些设备正常工作且连接良好。每个设备都有不同的错误ID代码,因此我们可以看到每个组件都无法正常工作。
当软件将对每个设备进行完全测试连接时,我们希望显示一条消息,显示每个发生故障的设备:
无法在一台或多台设备上连接[错误代码:XXXXXXX]。请查看www.xxxx.com/en/UserManual上的用户手册,如果您需要更多信息,请联系客户支持或发送电子邮件至xxxxx@example.com。
目前,我已经做了一些事情,但我觉得它不是非常“通用”,而且它有点硬编码。
我们为每个班级制作了一个ID,并添加了一个基数为2的数字:
enum eErrorCode
{
MOTORA = 0x0000001,
MOTORB = 0x0000010,
SERIAL = 0x0000100,
LAN = 0x0001000,
MAINBOARD = 0x0010000,
GENERATOR = 0x0100000,
MAX = 6
}
因此,当激活激活功能时,我们可以添加每个错误:
Int32 ConnectToEveryDevice()
{
Int32 Error = 0;
foreach(IDevices device in this.Devices)
{
Error += device.Connect();
}
return Error;
}
例如:如果 MotorA,Lan和Serial 失败,屏幕将弹出Hex [错误代码:0x00001101] ,以便客户端可以轻松找到错误用户手册(在线)如果我们需要添加设备,我们可以无需更改所有内容即可完成。有人比这个有更好或更清洁的选择吗?
感谢@Mike Christensen,我在CodeReview上提出了一个非常好的答案:
https://codereview.stackexchange.com/questions/43934/how-to-properly-detect-multiple-devices-failure
我稍后会尝试汇编反射属性(感谢@Tony Hopkinson),稍后我会将其添加为答案。