我有一个字典 - 存储变量及其类型的名称。 另外,我有一个带表达式的字符串。 有没有办法获得这个表达式的类型?
示例:
字典
"x" : List<DateTime>
"a" : int
"x[a+5]"
DateTime
此外,我还知道所有包含的名称空间。
此任务只是全局任务的一部分:我尝试为Workflow设计器编写Web实现。 “分配”活动的问题。我有左右部分表达式的字符串,但如果左侧部分不仅仅是变量名称,那么我在检测其类型时遇到问题(“分配”活动需要参数类型)。
答案 0 :(得分:0)
我通过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;
}