【发布时间】:2014-11-19 13:28:42
【问题描述】:
试图实现一个字段绑定系统,我有以下方法:
public void SetValue<TField>(Expression<Func<TField>> field, object value)
{
((field.Body as MemberExpression).Member as FieldInfo).SetValue(this, value);
// check bindings etc.
}
这样使用:
myObj.SetValue(() => myObj.SomeStringField, "SomeString");
它按预期工作,值已设置,我可以做一些其他我想做的事情,比如检查绑定等。
现在我正在尝试实现对绑定路径的支持,即允许类似:
myObj.SetValue(() => myObj.Names[1].FirstName, "John");
我得到了 FirstName 的 FieldInfo,但现在我还需要(至少)从表达式中获取对对象 myObj.Names[1] 的引用。关于如何做到这一点的任何想法?
【问题讨论】:
-
您在此处查看的是MethodCallExpression。如果我没记错的话,该方法的签名是
get_Item(int index)。
标签: c# reflection expression expression-trees func