我想每个人都见过这样的代码:
public void Server2ClientEnumConvert( ServerEnum server)
{
switch(server)
{
case ServerEnum.One:
return ClientEnum.ABC
//And so on.
我们可以做这样的事情来代替这种糟糕的情况:
public enum ServerEnum
{
[Enum2Enum(ClientEnum.ABC)]
One,
}
现在我们可以使用反射来遍历 ServerEnum 并从枚举声明本身获取转换映射。
我在这里遇到的问题是 Enum2Enum 属性的声明。
这可行,但用 Enum e 替换对象 o 则不行。我不希望能够将对象传递给构造函数,而只能传递其他枚举。
public class EnumToEnumAttribute : Attribute
{
public EnumToEnumAttribute(object o){}
}
这无法编译。
public class EnumToEnumAttribute : Attribute
{
public EnumToEnumAttribute(Enum e){}
}
编译错误有原因吗?除了以下之外,我还能如何传递映射所需的信息:
EnumtoEnumAttribute(Type dest, string enumString)
这看起来太冗长了,但如果这是唯一的方法,那么我想我会使用它。