如何动态构建Func <>?

时间:2019-03-01 12:44:04

标签: c# expression

我可以使用动态类型构建Func <>吗? 我的意思是有什么方法可以构建如下所示的func:

Func<typeof(myclass),bool> f=..........

Type myType;
Func<myType,bool> f=............

在我的项目中,我需要基于以下类构建表达式:

class Variable{
  public Type VarType{get;set;}
  public string Name{get;set;}
  public object Value{get;set;}
}

下面的方法基于value属性构建表达式,如果value为null,则应构建一个lambdeexpression,如果value不为null,则应构建一个constantexpression

Expression ToExpression(Variable variable){
  if(variable == null){
     // return constantexpression
  }else{
    string[] strs = variable.Name.split(new char[1] { '.' }, StringSplitOptions.RemoveEmptyEntries);
    ParameterExpression parameter = Expression.Parameter(variable.VarType, strs[0])
    MemberExpression member = Expression.PropertyOrField(parameter, strs[1]);
    ConstantExpression constant = Expression.Constant(someValue);
    return Expression.Lambda<Func<variable.VarType, bool>>(Expression.GreaterThan(member, constant), parameter);
  }
}

但是现在,Expression.Lambda<Func<variable.VarType, bool>>似乎是错误的。

所以我的问题有没有办法构建

之类的功能
Func<typeof(myclass),bool> f=..........

0 个答案:

没有答案