日期:2014-05-20  浏览次数:21016 次

如何用EXPRESSION写一个LAMDA用于实现吧 eval 功能?
请教:
我想对任意的一个实体对象,以及以字符串形式标识的属性或变量名,获取该属性的内容 这个行为写成一个函数,该如何操作?

即:
object Eval(object/instance instance, string propertyName)
{
return instance[propertyName];
}

类似上面的,当propertyName为A时,返回 instance.A,当为B时返回 instance.B。

------解决方案--------------------
不知我理解的是否有误
这个用反射来实现就可以了吧。。
------解决方案--------------------
EXPRESSION这个东西太复杂。。。。。。

还是去年4月份左右研究过这东西。。。。

况且也只是将expression用来构建lamba
------解决方案--------------------
探讨
谢谢回复。

你的理解是正确的。

我知道可以用反射来解决问题,但因为调用可能很频繁,通过反射机制来解决,可能会导致性能问题,因此,我想:

1——
掌握用EXPRESSION解决这个问题的方法。

2——
也许用EXPRESSION来解决会有很大的性能提升。

------解决方案--------------------
要通用的话,反射是不可避免的
------解决方案--------------------
最近正在写lambda解析心得的一个系列,是基于Irony的解析,你可以先参考一下。
http://blog.csdn.net/guoyichao/article/details/6637195

可以进行任意表达式的解析:
C# code

var i = your instance;
parser.With(()=>i).Parse<Func<object>>("()=>i.propertyName");