如何利用枚举的力量来帮助你:
[Flags]
public enum AlarmData
{
ForcedArm = 1,
FinalDoor = 2,
ExitFault = 4,
InhibitTamper = 8,
Display = 16,
Rearm = 32,
Line = 64,
ExtendBlock = 128
}
private static Dictionary<AlarmData, string> alarmDataLookup = new Dictionary<AlarmData, string>
{
{ AlarmData.ForcedArm, "Forced arm" },
{ AlarmData.FinalDoor, "Final door" },
{ AlarmData.ExitFault, "Exit fault" },
{ AlarmData.InhibitTamper , "Inhibit tamper" },
{ AlarmData.Display , "Display" },
{ AlarmData.Rearm , "Rearm" },
{ AlarmData.Line , "Line" },
{ AlarmData.ExtendBlock , "Extend block" }
};
public IEnumerable<string> EnumerateValues(AlarmData data)
{
return from pair in alarmDataLookup
where data.HasFlag(pair.Key)
select pair.Value;
}
从 XML 中读取值后,调用 EnumerateValues 很简单,只需将整数转换为 AlarmData 枚举,例如:
int value = GetAlarmValueFromXml();
var bindableValues = EnumerateValues((AlarmData)value);
当然,您不必从 EnumerateValues 方法返回字符串。然后,您需要做的就是将该方法的结果绑定到一个列表或其他一些元素,而 Bob 就是您的叔叔。