对于CameraControl基类中的所有字段,我也都有一个枚举。
在PelcoDCommand类中GetCommand()的实现中,我有一个switch语句,该语句根据枚举返回命令。
switch语句由18个大小写组成(每个枚举一个)。例如,
public override byte[] GetCommand(PelcoDCommands command)
{
switch(command)
{
case PelcoDCommands.Stop:
return Stop;
case PelcoDCommands.PanUp:
return PanUp;
case PelcoDCommands.PanDown:
return PanDown;
.........
}
}
有人可以指出我要替换switch语句的正确模式吗?如果有人有更好的类实现指南?
Abstract类的所有字段都是字节数组。
这是PelcoDCommands枚举:
public enum PelcoDCommands { PanUp, PanDown, TiltLeft, TiltRight, PanTiltUpright, PanTiltUpleft, PanTiltDownRight, PanTiltDownLeft, ZoomIn, ZoomOut, FocusNear, FocusFar, EnableThermal, DisableThermal, BlackHot, WhiteHot, SetZoomSpeed, Stop }
我还在努力实现将与linq配合使用的Dictionary CommandValue,以返回正确的值,如下所示:
公共重写字节[] GetCommand(PelcoDCommands命令) {
SetCommandChecksum();
var cmd = CommandValue.Where(x => x.Key == command);
return **/*still working on it*/**;
}
CommandValue是Dictionary且设置如下:
Dictionary<PelcoDCommands, byte[]> CommandValue = new Dictionary<PelcoDCommands, byte[]>();
CommandValue.Add(PelcoDCommands.Stop, Stop);
CommandValue.Add(PelcoDCommands.PanUp, PanUp);
CommandValue.Add(PelcoDCommands.PanDown, PanDown);
CommandValue.Add(PelcoDCommands.TiltLeft, TiltLeft);
CommandValue.Add(PelcoDCommands.TiltRight, TiltRight);
我只是认为我正在将PelcoDCommands枚举用于GetCommand()抽象方法声明,该声明不起作用,因为还会有其他类继承自CameraControl类。