缩短长枚举名称

时间:2016-10-04 18:02:42

标签: c# unity3d enums

这是一个奇怪的问题,但请耐心等待......

所以我使用的是第三方库,它使用很长的枚举名称,如:

ALongClassName.ALongPublicEnumType.ALongAndVerboseEnumName

由于我需要将code与每个枚举值进行比较,我想知道有一种方法可以缩短枚举名称以便于阅读,例如:

code == Event.Success

而不是:

code == ALongClassName.ALongPublicEnumType.ALongAndDescriptiveEnumName

3 个答案:

答案 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 部分一样,需要以这种冗长的方式表达自己。

我会尝试找到简短,精辟的名字,为你正在做的事情创建一个词汇表。

这真的是一个问题,因为如你所知,代码并不关心你如何命名这些值。关键词:语义和显着性。

如果你发布这些名字,我们可以提出一些较短的名字,以便了解你在做什么。