簡體   English   中英

如何將Linq表達式從F#傳遞給C#代碼

[英]How to pass LinQ Expressions from F# to C# code

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 )

但都沒有工作

我不確定新的F#3查詢表達式是否對您有所幫助,但是舊的PowerPack(仍然很好用!)有一個擴展方法Expr.ToLinqExpression() : Expression ,用於編譯F#引用表達式(即<@ fun me -> me.MyProperty @> )進入LINQ表達式。

編輯:正如丹尼爾指出的那樣, QuotationToLambdaExpression為F#3做了工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM