【发布时间】:2012-10-17 08:54:52
【问题描述】:
我有 许多 枚举类型,它们从服务返回并且我想映射到我的枚举类型。 我想要的是创建一个具有所有转换逻辑的映射器类。 我做了这样的事情:
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映射所有枚举,为什么不直接使用它们呢?
-
我们的域应用程序中有一个由系统架构师规定的命名约定
-
我不认为你可以通用。如果您通常可以确定哪个值映射到哪个其他值,则可以通过反射来做到这一点。 (你的 GetEnum 函数可能是通用的,但我认为你需要一个额外的字典来选择给定类型的正确字典)。
标签: c# asp.net-mvc enums