[英]How to pass a discriminated union from C# to a F# function (F# - C# interop)
[英]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.