我有很多从服务返回并想要映射到我的枚举类型的枚举类型。 我想要的是创建一个具有所有转换逻辑的映射器类。 我做了这样的事情:将枚举转换为其他枚举
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();
}
}
但因为我有很多其他枚举,通过这种方式,我会创造出许多静态字段(如“字典”域)和它们的等效方法(如“GetEnum “)...有一个更好的方法吗? 通用也许?
如果你想映射所有枚举1on1,为什么不使用它们呢? – KyorCode
我们的域名应用程序中有一个命名约定,由我们的系统架构师指定 –
我不认为您可以通用。如果您可以确定通常哪个值映射到哪个其他值,则可以使用反射来完成。 (你的GetEnum函数可能是通用的,但我认为你需要一个字典的附加字典来选择给定类型的正确字典)。 –