f# - 在不需要函数的上下文中使用 F# 扩展
问题描述
嗨,我在 f# 中有一个扩展方法,它检查 TcpClinet 是否已连接,它是相当简单的代码:
[<Extension>]
type TcpExtension() =
[<Extension>]
static member inline IsConnectionEstablished(client: TcpClient) : bool =
let ipProperties : IPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties()
let tcpConnection : Option<TcpConnectionInformation> = ipProperties.GetActiveTcpConnections() |> Seq.tryFind(fun connection -> connection.LocalEndPoint.Equals(client.Client.LocalEndPoint) && connection.RemoteEndPoint.Equals(client.Client.RemoteEndPoint))
match tcpConnection with
| Some connection -> true
| None -> false
现在我试图通过简单的方式使用它:
let private WaitForData (client : TcpClient) =
let isConnectionAlive : bool = client.IsConnectionEstablished
isConnectionAlive
但我收到的消息如下:
此函数接受太多参数,或在不期望函数的上下文中使用
当我检查 Microsoft 文档时,这就是他们应该如何处理它,我在这里缺少什么?
解决方案
错误消息有点误导,你实际上错过了一个论点
要调用你需要传入的函数,unit
就像你从 C# 调用它一样
let isConnectionAlive : bool = client.IsConnectionEstablished()
推荐阅读
- google-sheets - 将一行转换为共享一些相同数据的多行
- excel - Excel 筛选公式/函数 - 从筛选公式/函数返回第一行
- javascript - 使用另一个数组内的数组中的数据进行过滤
- oracle - 如何使用 sysdate arg 创建 oracle 作业?
- r - for循环和列表生成问题
- javascript - how to set up a check box to pick a level
- slf4j - Logback for different log levels
- reactjs - Version Mismatch Error, while processing and publishing an asset to link with an entry
- sql-server - Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37
- python - Google Colab not importing all packages in dependencies -