【发布时间】:2015-01-13 18:03:47
【问题描述】:
我正在尝试使用Expression<Func<T, string>> 类型的参数调用方法,但我构建的表达式树不允许我调用该方法。这是一个简短但完整的程序来演示该问题:
using System;
using System.Linq.Expressions;
public class Test
{
public string Name { get { return ""; } }
public static void Main()
{
Foo<Test>();
}
static void Foo<T>()
{
var parameter = Expression.Parameter(typeof(T), "t");
var property = Expression.Property(parameter, "Name");
var lambda = Expression.Lambda(property, parameter);
Bar<T>(lambda);
}
static void Bar<T>(Expression<Func<T, string>> expression) {}
}
错误:
error CS1503: Argument 1: cannot convert from
'System.Linq.Expressions.LambdaExpression' to
'System.Linq.Expressions.Expression<System.Func<T, string>>'
如何将我的表达式树传递给方法?
【问题讨论】:
标签: c# lambda expression-trees