c# - 将字符串转换为表达式树?

标签 c# lambda

我们需要为类型提供用户友好的描述。我们创建了一个将类型映射到描述的资源文件。

使用实例的全名,将圆点替换为下划线作为key。 描述是一个字符串,包含引用实例中属性的模板。

当我们得到一个实例时,我们得到它的类型,得到键,并用它来找到资源值。然后使用正则表达式提取那些模板属性。然后使用反射来实际获取属性的值。

例如。 该实例可能是地址 关键是 MyNameSpace_MyPublicTypes_Address(假设全名是'MyNameSpace.MyPublicTypes.Address')

描述可以是“用户停留在{Country} 的{State.City}”——State 和Country 是Address 类的属性。国家有属性(property)城市。

有没有可能有类似的东西 'obj=>obj.State.City' 还是 'obj=>obj.Country'?或某种表达方式?

我正在使用 obj 因为它是反射实例。

感谢任何帮助。不确定之前是否有人问过这个问题。

最佳答案

这几乎就是动态 LINQ 库(.NET 3.5 示例之一)所做的。来源是all available , 或使用 see here .您应该能够跟踪将字符串解析为 Expression 的代码。当然,. 上的拆分和手动组装并不难;我有一个动态的 OrderBy 实现 here就是这样做的。

关于c# - 将字符串转换为表达式树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119627/

相关文章:

Python 排序 Lambda

java - 一种返回可选值(如果存在)而不保存或派生两次的方法?

c++ - 导致运行时执行的 constexpr 仿函数中的成员

python - 舍入 lambda 函数

c++ - 可变参数模板 lambda 参数的模板推导

c# - 什么时候按键绑定(bind)比处理按键弹起/按键按下 (.ect) 事件更可取?

c# - 在 BackgroundWorker 中调用 ShowDialog

c# - unity中如何解决SmartFoxServer连接错误

c# - 一个 exe 中的多个 Windows 服务

c# - 使用 httpclient 在 C# 中获取 API 数据