gpt4 book ai didi

c# - 如何将 LinQ 表达式从 F# 传递到 C# 代码

转载 作者:太空狗 更新时间:2023-10-29 21:45:39 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com