c# - 从 C# 调用具有函数参数的 F# 函数

标签 c# f#

在 F# 中我有函数:

module ModuleName
let X (y: int -> unit) = ()

我如何在 C# 中调用它?理想情况下它看起来像

ModuleName.X(x => x*x);

但此 lambda 语法不会隐式转换为 FSharpFunc。

最佳答案

最简单的方法是使用标准 .NET 委托(delegate)类型公开您的 API。在这种情况下,这意味着您的 F# 定义应该更像:

let X (y:Action<int>) = ()

但是,如果您想保持 F# API 与当前相同,则可以使用 FuncConvert.ToFSharpFunc从 C# 端:

ModuleName.X(FuncConvert.ToFSharpFunc(x => x*x));

关于c# - 从 C# 调用具有函数参数的 F# 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914527/

相关文章:

c# - 事务存储过程 C#

c# - 更改密码时如何重复使用身份密码验证

类型的 F# 后缀关键字

f# - F# 语言引用文档是否以离线格式(PDF、CHM)提供?

c# - 是什么导致了这个 "no such table exception"?

c# - 在 C# 中转换问题

c# - 服务器已拒绝客户端凭据,WCF 作为 Windows 服务

f# - 列表中的 Unchecked.defaultof

haskell - F# 相当于 Haskell scanl/scanr

f# - Fable-Elmish 中的渲染组件