获取存储在字符串中的表达式类型

时间:2015-01-30 14:55:00

标签: c# .net reflection runtime

我有一个字典 - 存储变量及其类型的名称。 另外,我有一个带表达式的字符串。 有没有办法获得这个表达式的类型?

示例:

  • 字典

    • "x" : List<DateTime>
    • "a" : int
  • string:"x[a+5]"
  • 预期结果:DateTime

此外,我还知道所有包含的名称空间。

此任务只是全局任务的一部分:我尝试为Workflow设计器编写Web实现。 “分配”活动的问题。我有左右部分表达式的字符串,但如果左侧部分不仅仅是变量名称,那么我在检测其类型时遇到问题(“分配”活动需要参数类型)。

1 个答案:

答案 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;
}