我已经付出了一些努力并为此创建了 2 个转换器,代码实现可在以下要点上获得:
BasedEnumConverter 和 Helper:https://gist.github.com/chubbson/816b24a59e5f7e90385e
基于值转换器https://gist.github.com/chubbson/375b535243c166d28119
void Main()
{
var os = Tshort.Convesionfailed.ToStringOct().Dump(); //000120
BasedEnumConverter<Tshort>.ParseEnumFromOct(os).Dump(); //Conversionfailed
var stsbbin = Tsbyte.BAD.ToStringBin().Dump(); //10000000
BasedEnumConverter<Tsbyte>.ParseEnumFromBin(stsbbin).Dump(); //BAD
var sinthex = Tint.OK.ToStringHex().Dump(); //00000080
BasedEnumConverter<Tint>.ParseEnumFromHex(sinthex).Dump(); //OK
}
enum Tenum : byte { A = 0, B = 1, OK = 128, BAD = 255, Convesionfailed = 80 }
enum Tbyte : byte { A = 0, B = 1, OK = 128, BAD = 255, Convesionfailed = 80 }
enum Tsbyte : sbyte { A = 0, B = 1, OK = 127, OK2 = 126, BAD = -128, BAD2 = -127, Convesionfailed = 80 }
enum Tshort : short { A = 0, B = 1, OK = 128, BAD = 255, Convesionfailed = 80 }
enum Tushort : ushort { A = 0, B = 1, OK = 128, BAD = 255, Convesionfailed = 80 }
enum Tint : int { A = 0, B = 1, OK = 128, BAD = 255, Convesionfailed = 80 }
enum Tuint: uint { A = 0, B = 1, OK = 128, BAD = 255, Convesionfailed = 80 }
enum Tlong : long { A = 0, B = 1, OK = 128, BAD = 255, Convesionfailed = 80 }
enum Tulong : ulong { A = 0, B = 1, OK = 128, BAD = 255, Convesionfailed = 80, Min = ulong.MinValue, Max = ulong.MaxValue}
请检查代码,给我一个关于性能/oop 的提示,什么是概念上的错误或者可以做得更好。我的第一种(或第二种方法是尝试通过一些移位和字符串附加来自行计算值,但我放弃了这 8 种枚举基本类型)