当我在表达式上调用 ToString() 方法时,枚举值打印为整数。是否有一些格式过载?
也许我可以从表达式创建一个派生类并覆盖一些 ToString 方法。有什么想法吗?
这是一个示例:
public enum LengthUnits { METRES, FEET };
Expression<Func<LengthUnits, bool>> isFeet = l => l == LengthUnits.FEET;
string isFeetFunctinoAsString = isFeet.ToString();
isFeetFunctinoAsString 的值为:
u => (Convert(u) = 1)
我不想要 1 而是 FEET 。
最佳答案
这在表达式中是不可能的,因为甚至在您可以干扰表达式之前,枚举已经被转换为整数。
您可能想检查何时有左侧或右侧参数的二进制表达式,然后手动转换,但我不建议这样做。
关于C# 枚举显示在 Expression.ToString() 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1405873/