Расширения F #, используемые в контексте, где функция не ожидается - PullRequest
2 голосов
/ 06 июня 2019

Привет, у меня есть метод расширения в 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, вот как они показывают, что она должна обрабатываться, что мне здесь не хватает?

1 Ответ

3 голосов
/ 06 июня 2019

Сообщение об ошибке немного вводит в заблуждение, вы на самом деле отсутствует аргумент

Чтобы вызвать функцию, вам нужно передать unit, как если бы вы вызывали ее из C #

let isConnectionAlive : bool = client.IsConnectionEstablished()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...