public ClientTestHelper(MessageReader reader, MessageWriter writer) { ClientHandler = new StreamRpcClientHandler(); Client = new JsonRpcClient(ClientHandler); ClientMessageReader = reader; ClientMessageWriter = writer; // We use positional parameters when issuing cancelRequest request. Just for more test coverage. Client.RequestCancelling += (_, e) => { Client.SendNotificationAsync("cancelRequest", new JArray(e.RequestId.Value), CancellationToken.None); }; disposables.Add(ClientHandler.Attach(ClientMessageReader, ClientMessageWriter)); var proxyBuilder = new JsonRpcProxyBuilder { ContractResolver = Utility.DefaultContractResolver }; ClientStub = proxyBuilder.CreateProxy <ITestRpcContract>(Client); ClientExceptionStub = proxyBuilder.CreateProxy <ITestRpcExceptionContract>(Client); ClientCancellationStub = proxyBuilder.CreateProxy <ITestRpcCancellationContract>(Client); }