【发布时间】:2014-02-04 14:20:40
【问题描述】:
我正在使用 XML 文件中提供的值动态创建表达式树(即我读取字符串)。从该文件中读取成员的值和类型。我正在尝试创建一个整数的ConstantExpression:
XElement expression = GetMyCurrentMember();
//<member type="System.Int32">5</member>
return Expression.Constant(expression.Value, Type.GetType(expression.Attribute("type").Value, false, true));
在return 语句中,我收到错误Argument types do not match,经检查,由于我传递了string 并说它是int,因此它几乎正确。一个简单的演员表会(可能)解决问题,但这意味着我失去了整个系统的动态。而不是int,我可以有double 或char 甚至自定义类型,我真的不想为每种类型创建不同的调用或方法。有没有办法“强制”将输入值自动转换为请求的类型?
【问题讨论】:
-
如果您“拥有” XML 格式,您可能会考虑使用 XAML 而不是纯 XML。这样您就可以自动获得强类型值。
-
@MikeStrobel 不幸的是,这不是一个选择。表达式将进入旧文件。
标签: c# dynamic expression-trees