私は変換しようとしています:
Expression<Func<TProperty>>
に
Func<TObject, TProperty>
TObjectが既知であり、式によって表現されるプロパティを公開する場合。このためには、式を操作し、それを新しい式の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;
編集終了
問題は、それをどうやってやるのかわからないということです。まだ出会っていないので、ラムダ式の操作に関するいくつかの(参照)アクセス可能な情報を本当に感謝します。