我正在尝试转换:
Expression<Func<TProperty>>
到一个
Func<TObject, TProperty>
其中 TObject 是已知的,并公开了由 Expression 表示的属性。为此,我想必须操作表达式,将它与 TObject 类型参数结合到一个新的表达式中,然后编译。
编辑:示例输入和输出
class SomeType
{
public int Number { get; set; }
public Func<TObject, TProperty> FuncConverter<TObject, TProperty>(Expression<Func<TProperty>>)
{
// ???
}
public void test()
{
Func<SomeType, int> outputFunc = FuncConverter<SomeType, int>(inputExpression);
}
}
我期望作为输入的表达式:
Expression<Func<int>> inputExpression = () => Number;
此表达式指向 SomeType 上的 Number 属性
我期望作为输出的 Func 委托:
Func<SomeType, int> outputFunc = type => type.Number;
结束编辑
问题是,我不知道该怎么做。我真的很感激一些(参考)关于操作 Lambda 表达式的可访问信息,因为我还没有遇到任何信息。