作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
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 工作。
关于c# - 如何将 LinQ 表达式从 F# 传递到 C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13874032/
我是一名优秀的程序员,十分优秀!