C# 枚举显示在 Expression.ToString() 上

标签 c# enums lambda

当我在表达式上调用 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/

相关文章:

python - 使用 Lambdas 的 Panda Dataframes 条件语句

C# 无法正确识别 JSON 数组

c# - ASP.NET Core API - ActionResult<T> 与 async Task<T>

c++ - c++11/1y lambda 函数的类型签名是什么?

java - 枚举和 AspectJ - getEnumConstants() 返回 null

java - Enum.valueOf 对扩展 Enum 的类的未知类型发出警告?

c# - 在 C# 中编写我的第一个 DSL 并挂断了 func<T> & Action

c# - 如何使用 UIAutomation 获取鼠标和键盘事件

c# - 系统.Windows.数据错误 : 40 : BindingExpression path error:

swift - 将多个枚举与单个 guard 案例匹配?