获取存储在字符串中的表达式类型
Getting Type of expression which stored in string
我有一个字典 - 存储变量名称及其类型。
另外,我有一个带有表达式的字符串。
有没有办法得到这个表达式的类型?
示例:
词典
"x" : List<DateTime>
"a" : int
- 字符串:
"x[a+5]"
- 预期结果:
DateTime
此外,我也知道所有包含的命名空间。
此任务是全局任务的一小部分:我正在尝试为工作流设计器编写 Web 实现。 "Assign" activity 的问题。我有左右部分表达式的字符串,但如果左边部分不仅仅是变量名,那么我在检测它们的类型时遇到问题("Assign" activity 需要参数类型)。
我通过 linq dynamic 找到了解决方案(可以从 nuget 安装)
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
public Type GetExpressionType(string expression, IDictionary<string, Type> variables)
{
var types = new List<ParameterExpression>();
foreach (var varType in variables)
types.Add(Expression.Parameter(varType.Value, varType.Key));
var lamda = System.Linq.Dynamic.DynamicExpression.ParseLambda(types.ToArray(), null, expression);
return lamda.ReturnType;
}
我有一个字典 - 存储变量名称及其类型。 另外,我有一个带有表达式的字符串。 有没有办法得到这个表达式的类型?
示例:
词典
"x" : List<DateTime>
"a" : int
- 字符串:
"x[a+5]"
- 预期结果:
DateTime
此外,我也知道所有包含的命名空间。
此任务是全局任务的一小部分:我正在尝试为工作流设计器编写 Web 实现。 "Assign" activity 的问题。我有左右部分表达式的字符串,但如果左边部分不仅仅是变量名,那么我在检测它们的类型时遇到问题("Assign" activity 需要参数类型)。
我通过 linq dynamic 找到了解决方案(可以从 nuget 安装)
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
public Type GetExpressionType(string expression, IDictionary<string, Type> variables)
{
var types = new List<ParameterExpression>();
foreach (var varType in variables)
types.Add(Expression.Parameter(varType.Value, varType.Key));
var lamda = System.Linq.Dynamic.DynamicExpression.ParseLambda(types.ToArray(), null, expression);
return lamda.ReturnType;
}