c# - 使用 Expression 类将字符串设置为 int 常量

标签 c# dynamic expression-trees

我正在使用 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。一个简单的转换(可能)会解决问题,但这意味着我正在失去整个系统的动态。我可以使用 doublechar 甚至自定义类型来代替 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/

相关文章:

c# - Case 语句中的 Linq 表达式

c# - Nancy 自托管和静态内容文件

c# - Linq for 嵌套循环

objective-c - 创建单一尺寸的动态 UILabel 字体

list - Oracle Apex - 选择列表填充文本字段

c# - 参数化 Linq 表达式帮助

c# - 从现有表达式创建新表达式

c# - 如何使用带有 c# 的 google sheets api 将 csv 文件上传到 google sheets?

c# - 组织方法以更好地访问它们

matlab - 在Matlab中的for循环中使用动态向量作为索引值