【发布时间】:2010-08-03 05:45:13
【问题描述】:
F# powerpack 带有一组转换方法,可将 Func<...> 转换为 F# 函数,无论是标准函数还是元组函数。但是是否有可能实现相反的效果:如果您想从 F# 代码调用采用 Func<...> 的 C# 方法并想使用本机 F# lambda 表达式(例如 fun x -> some_function_of(x))?
如果我将带有签名 'a -> 'b 的 F# 函数发送到需要 Func 的 C# 方法,则 F# 编译器会生成以下错误:
这个表达式应该有类型 Function 但这里有类型 'T -> 'R
我想继续使用 F# lambda 表达式,但要使用转换层以便能够将它们作为 C# Func lambda 发送。这可以实现吗?
【问题讨论】:
-
对于在此处提到的 PowerPack 中找不到转换方法的任何人,他们在 FSharp.PowerPack.Linq、FuncConvertExtensions 中