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

时间:2010-01-22 18:48:09

标签: c# lambda

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

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

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

例如。 实例可能是Address 关键是MyNameSpace_MyPublicTypes_Address(比如全名是'MyNameSpace.MyPublicTypes.Address')

描述可以是'用户留在{Country}中的{State.City}' - 州和国家是地址类的属性。国家有财产城。

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

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

感谢任何帮助。不确定此问题是否曾被提出过。

1 个答案:

答案 0 :(得分:1)

这非常类似于动态LINQ库(.NET 3.5示例之一)所做的。来源为all available,或用于see here。您应该能够跟踪将字符串解析为Expression的代码。当然,在.上拆分并手动组装并不困难;我有一个动态的OrderBy实现here来执行此操作。