【发布时间】:2015-05-03 02:06:29
【问题描述】:
如何创建表达式树以通过数组访问读取 IDictionary<string,object> 的值?
我要代表:
((IDictionary<string,object>)T)["KeyName"]
我找不到任何用于使用字符串名称访问的 ArrayAccess 示例。我想要类似的东西:
var parameterExpression = Expression.Parameter(typeof(IDictionary<string, object>));
var paramIndex = Expression.Constant("KeyName");
var arrayAccess = Expression.ArrayAccess(parameterExpression, paramIndex);
我收到错误消息,指出它不是数组。这样做的正确方法是什么?
【问题讨论】:
-
表达式不是数组,而是字典。您应该调用字典对象的索引器属性(“Item”)
标签: c# linq reflection lambda