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

Getting Type of expression which stored in string

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

示例:

此外,我也知道所有包含的命名空间。

此任务是全局任务的一小部分:我正在尝试为工作流设计器编写 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;
}