Как передать выражения LinQ из кода F# в код C#
ReactiveUI имеет методы с signitures как
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 )
но не работает
1 ответов
Я не уверен, что новые выражения запроса F# 3 помогут вам, но старый PowerPack (который все еще отлично работает!) имеет метод расширения Expr.ToLinqExpression() : Expression
, для компиляции выражений котировок F# (т. е. <@ fun me -> me.MyProperty @>
) в выражения LINQ.
Edit: Как заметил Дэниел,--7-->QuotationToLambdaExpression выполняет работы, для F# 3.