我目前正在使用枚举来描述许多可能的操作系统平台.我有东西WIN32,SOLARIS64,LINUX32,但也有更广泛的类别,如ALLWIN和ALLUNIX.我在我的代码中有一个位置,我需要决定给定的平台是否属于另一个平台.对我而言,这听起来像继承,但显然枚举不能相互继承.
然后,我想到将这些平台从1个枚举转换为彼此继承的空类.我觉得这在概念和空间上是一个可怕的想法,但不是C#的主人我以为我会在这里发帖寻找更有经验的意见.有什么想法吗?
这看起来像是这样的:
public class ALL {};
public class ALLWIN : ALL {};
public class WINNT : ALLWIN{};
public class WIN32 : WINNT{};
Run Code Online (Sandbox Code Playgroud)
... 等等等等.
枚举不能继承,但它们具有标志的概念,它完成了你想要做的同样的事情:
[FlagsAttribute]
enum OSs
{
WinNT = 1;
WinNXP = 2;
AllWIN = WinNT | WinNXP;
}
Run Code Online (Sandbox Code Playgroud)
等等...
链接到枚举.