这是一个奇怪的问题,但请耐心等待......
所以我使用的是第三方库,它使用很长的枚举名称,如:
ALongClassName.ALongPublicEnumType.ALongAndVerboseEnumName
由于我需要将code
与每个枚举值进行比较,我想知道有一种方法可以缩短枚举名称以便于阅读,例如:
code == Event.Success
而不是:
code == ALongClassName.ALongPublicEnumType.ALongAndDescriptiveEnumName
答案 0 :(得分:7)
您可以使用using
别名来实现此目的。
在课堂顶部,你可以这样做:
using Event = ALongClassName.ALongPublicEnumType.ALongAndVerboseEnumName;
然后您可以像
一样使用它code == Event.Success
答案 1 :(得分:3)
除了将值映射到自定义静态类之外,没有其他选择,除非在James Monger's answer中为您设置只有枚举名称而不是其值的别名。
因此,以下方法可行:
public static class VerboseMapper
{
public const ALongClassName.ALongPublicEnumType MyShortName = ALongClassName.ALongPublicEnumType.ALongAndVerboseEnumName;
....
}
现在您将使用VerboseMapper.MyShortName
而不是原始枚举。
答案 2 :(得分:0)
编辑:没有注意到“第三方”问题。
你可以做的最多的是using
enum的别名,如其他答案所述。
你真的不需要将枚举放入类中。所以最初的部分会消失。
此外,我会说这是一个不受枚举影响的问题。它与命名空间,类,方法,变量以及可以附加名称的任何内容完全相同。
如果您没有简洁的名字,可能会出现语义/概念问题。就像你没有掌握价值的 SALIENT 部分一样,需要以这种冗长的方式表达自己。
我会尝试找到简短,精辟的名字,为你正在做的事情创建一个词汇表。
这真的是一个问题,因为如你所知,代码并不关心你如何命名这些值。关键词:语义和显着性。
如果你发布这些名字,我们可以提出一些较短的名字,以便了解你在做什么。