我有一个公共实体合同要在我的服务中公开,但在内部我有一些差异。在这种特定情况下,我有一个字符串值域表示为枚举器。域在公共和内部范围内是相同的,但使用的名称是不同的,我需要从一个转换为另一个。首先,我想保持基础并使用一个简单的开关,但后来我想使用镜像枚举器,我需要内部字符串值,然后使用ToString()
。哪一个是最有效的方法呢?
public enum PublicDomain {
AAA = 0,
BBB = 1,
CCC = 2,
DDD = 3
}
private enum InternalDomain {
W = 0,
X = 1,
Y = 2,
Z = 3
}
string stringValue = null;
switch (publicEnumValue)
{
case PublicDomain.AAA:
stringValue = "W";
break;
case PublicDomain.BBB:
stringValue = "X";
break;
case PublicDomain.CCC:
stringValue = "Y";
break;
case PublicDomain.DDD:
stringValue = "Z";
break;
}
foo(stringValue);
private enum InternalDomain {
W = 0,
X = 1,
Y = 2,
Z = 3
}
foo(((InternalDomain)publicEnumValue).ToString());
答案 0 :(得分:0)
我不会关注“效率”,而是关注可维护性。
我会将公开enum
转换为内部enum
static class PublicDomainExtensions
{
public InternalDomain ToInternal(this PublicDomain e)
{
return (InternalDomain) e;
}
}
如果InternalDomain
或PublicDomain
发生变化,您需要做的就是重写ToInternal
。