7

ReactiveUI には、次のようなシグネチャを持つメソッドがあります

public static ReactiveUI.ObservableAsPropertyHelper<TRet> 
  ObservableToProperty<TObj, TRet>(
    this TObj This, 
    System.IObservable<TRet> observable, 
    System.Linq.Expressions.Expression<System.Func<TObj, TRet>> property, 
    TRet initialValue = null, 
    System.Reactive.Concurrency.IScheduler scheduler = null
  )

F#では、次のようなオブジェクトをどのように構築しますか

System.Linq.Expressions.Expression<System.Func<TObj, TRet>> property, 

C#では、次のようなことをします

this.ObservableAsPropertyHelper(
    observable,
    me => me.MyProperty
)

編集

私はもう試した

m.ObservableToProperty(this, value, fun me -> me.Property )

m.ObservableToProperty(this, 
            value, 
            new Linq.Expression.Expression(fun me -> me.Property )

しかし、どちらも機能しません

4

1 に答える 1

5

新しい F# 3 クエリ式が役立つかどうかはわかりませんが、古い PowerPack (それでも問題なく動作します!) には、Expr.ToLinqExpression() : ExpressionF# 引用式 (つまり<@ fun me -> me.MyProperty @>) を LINQ 式にコンパイルするための拡張メソッドがあります。

編集: ダニエルが指摘したように、F# 3ではQuotationToLambdaExpressionが機能します。

于 2012-12-14T08:26:44.697 に答える