我很少有代表外部系统版本的枚举标志。我想确保每次外部系统升级它的版本时,我的功能应该能够支持它(我会提前知道版本会升级,所以它是一个主动行动)。此外,我的通信必须与该系统双向进行,这意味着内部和外部通信可以有不同的版本集。
我创建了一个枚举标志来表示这些版本。
[Flags]
public enum ExternalSystemVersionEnum
{
System1 = 1,
System2 = 2,
System3 = 4,
All = 7
}
这适用于正式的重大升级。遗憾的是,我不能将它们命名为 System1.0 等。此外,作为它的小数,我不能使用通用枚举解析器。
(T) Enum.Parse(typeof (T), Convert.ToString(enumValue));
当然,我仍然可以通过使用switch/if 语句来实现上述目的,但我真的想完全避免任何硬编码(如果可以的话,甚至是资源/内容),因为外部系统的一个版本可能会被完全丢弃,而我不想为不得不追逐所有字符串而烦恼。
我还需要标志或等效功能,因为我可能仍会收到没有系统版本标识的通信,默认情况下适用于所有版本。另一种通信可能只适用于某些选择的版本,例如。仅适用于 2.0 以后等。
请注意,我可以通过使用 Switch/If 轻松实现这一点,但我不希望有任何硬编码,除非没有其他(简单)方法。我在这里主要关心的是具有类似于标志的功能,但可以轻松识别带小数位的值,例如 1.0 或 1.2 或 1.3.1 (尽管在历史上它们从未有双小数点),并提供编译时间故障。我对其他机制的建议持开放态度,但我真的更希望它是一个简单的逻辑,因为它是整个过程中非常微不足道的一部分。