我想每个人都看过如下代码:
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)
这似乎太冗长,但如果这是唯一的方法,那么我想我会用它.