我正在使用 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
。一个简单的转换(可能)会解决问题,但这意味着我正在失去整个系统的动态。我可以使用 double
或 char
甚至自定义类型来代替 int
,我真的不想为创建不同的调用或方法每一种。有没有一种方法可以“强制”将输入值自动转换为请求的类型?
最佳答案
您可以“转换”该值,但您需要决定如果转换失败该怎么办:
string value = expression.Value;
Type type = Type.GetType(expression.Attribute("type").Value, false, true);
return Expression.Constant(Convert.ChangeType(value, type), type);
关于c# - 使用 Expression 类将字符串设置为 int 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21555009/