我有许多从服务返回的 Enum类型,我想将它们映射到Enum类型。我想要的是创建一个映射类,它具有所有的转换逻辑。我做了这样的事:
public static class ErrEnumMapper
{
private static Dictionary<FullErrorTypeError, eError> dictionary;
static ErrEnumMapper()
{
var dictionary = new Dictionary<FullErrorTypeError, eError>()
{
{FullErrorTypeError.APP, eError.APPLICATION},
{FullErrorTypeError.INF, eError.INF},
{FullErrorTypeError.NO, eError.NONE},
{FullErrorTypeError.PAX, eError.PASSENGER},
{FullErrorTypeError.SYS, eError.SYSTEM}
};
}
public static eError GetEnum(FullErrorTypeError key)
{
var val = dictionary[key];
if (val != null)
return val;
throw new InvalidOperationException();
}
}但是,由于我有许多其他Enum,因此,我必须创建许多静态字段(如“字典”字段)和它们的等效方法(如“GetEnum”)可能是普通的?
发布于 2012-10-17 09:09:44
除非两组枚举的积分值或名称是相同的,否则除非手动映射,否则不能从一个枚举值转到另一个枚举值。
一些建议:
ErrEnumMapper读取该属性。仍然是手动映射,也许只是重新组织。当然,本着接吻的精神,我会坚持使用#1,#2,或者只处理手动映射。
发布于 2012-10-17 09:04:08
也许我不是真的明白你的意思..。但是,如果它们具有相同的基本值,则可以显式地转换它们:
enum FirstEnum {
ONE,
TWO,
THREE
}
enum SecondEnum {
FOUR,
FIVE,
SIX
}
static void Main(string[] args) {
FirstEnum first = FirstEnum.ONE;
SecondEnum second = (SecondEnum)first;
Console.WriteLine(second); // prints FOUR
}这样你就可以保持你的命名惯例了。
https://stackoverflow.com/questions/12930563
复制相似问题