翻译字符串值域枚举器的最有效方法是什么?

时间:2015-09-11 13:59:59

标签: c# .net enums

我有一个公共实体合同要在我的服务中公开,但在内部我有一些差异。在这种特定情况下,我有一个字符串值域表示为枚举器。域在公共和内部范围内是相同的,但使用的名称是不同的,我需要从一个转换为另一个。首先,我想保持基础并使用一个简单的开关,但后来我想使用镜像枚举器,我需要内部字符串值,然后使用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);

枚举器>枚举器>的ToString()

private enum InternalDomain {
    W = 0,
    X = 1,
    Y = 2,
    Z = 3
}

foo(((InternalDomain)publicEnumValue).ToString());

1 个答案:

答案 0 :(得分:0)

我不会关注“效率”,而是关注可维护性。

我会将公开enum转换为内部enum

static class PublicDomainExtensions
{
   public InternalDomain ToInternal(this PublicDomain e)
   {
      return (InternalDomain) e;
   }
 }

如果InternalDomainPublicDomain发生变化,您需要做的就是重写ToInternal