0

运行此代码时出现以下参数异常(“表达式必须是可读的参数名称:正确”),但无法弄清楚原因。

此代码旨在创建一个委托以获取 XmlNode 中的属性并将它们映射到对象上的属性。

private static Action<XmlNode, T>   createMapperFunction() {
            var props = typeof(T).GetProperties().ToArray();
            var xmlNodeParameter = Expression.Parameter(typeof(XmlNode), "x");
            var resultParameter = Expression.Parameter(typeof(T), "result");
         //   Expression.
            var exprList = new List<Expression>();
            for (int i = 0 ; i < props.Length ; i++) {
                if (props[i].PropertyType == typeof(string))
                    exprList.Add(Expression.Assign(Expression.Property(resultParameter,props[i].Name), 
                            Expression.Property(
                                Expression.Property(
                                    Expression.Property(xmlNodeParameter,"Attributes"), "ItemOf", Expression.Constant(props[i].Name)),"InnerText")));
            }
            var body = Expression.Block(exprList);
            return Expression.Lambda<Action<XmlNode, T>>(body, xmlNodeParameter, resultParameter).Compile();



        }
4

1 回答 1

2

XmlAttribute.InnerText是只写的。XmlAttribute.InnerText用作赋值的右侧不起作用,因为表达式无法读取值以Assign将其分配给左侧。

于 2012-07-31T15:37:53.077 回答