@@ -125,7 +125,7 @@ public sealed class LspConnection
125125 /// </summary>
126126 Task _dispatchLoop ;
127127
128- private JsonSerializerSettings _jsonSerializerSettings ;
128+ private readonly Serializer _serializer ;
129129
130130 /// <summary>
131131 /// Create a new <see cref="LspConnection"/>.
@@ -160,7 +160,7 @@ public LspConnection(ILoggerFactory loggerFactory, Stream input, Stream output)
160160 _input = input ;
161161 _output = output ;
162162 // What does client version do? Do we have to negotaite this?
163- _jsonSerializerSettings = new Serializer ( ClientVersion . Lsp3 ) . Settings ;
163+ _serializer = new Serializer ( ClientVersion . Lsp3 ) ;
164164 }
165165
166166 /// <summary>
@@ -336,7 +336,7 @@ public void SendNotification(string method, object notification)
336336 {
337337 // No Id means it's a notification.
338338 Method = method ,
339- Params = JObject . FromObject ( notification )
339+ Params = JObject . FromObject ( notification , _serializer . JsonSerializer )
340340 } ) ;
341341 }
342342
@@ -394,7 +394,7 @@ public void SendNotification(string method, object notification)
394394 {
395395 Id = requestId ,
396396 Method = method ,
397- Params = request != null ? JObject . FromObject ( request ) : null
397+ Params = request != null ? JObject . FromObject ( request , _serializer . JsonSerializer ) : null
398398 } ) ;
399399
400400 await responseCompletion . Task ;
@@ -457,13 +457,13 @@ public void SendNotification(string method, object notification)
457457 {
458458 Id = requestId ,
459459 Method = method ,
460- Params = request != null ? JObject . FromObject ( request ) : null
460+ Params = request != null ? JObject . FromObject ( request , _serializer . JsonSerializer ) : null
461461 } ) ;
462462
463463 ServerMessage response = await responseCompletion . Task ;
464464
465465 if ( response . Result != null )
466- return response . Result . ToObject < TResponse > ( ) ;
466+ return response . Result . ToObject < TResponse > ( _serializer . JsonSerializer ) ;
467467 else
468468 return default ( TResponse ) ;
469469 }
@@ -659,7 +659,7 @@ async Task SendMessage<TMessage>(TMessage message)
659659 if ( message == null )
660660 throw new ArgumentNullException ( nameof ( message ) ) ;
661661
662- string payload = JsonConvert . SerializeObject ( message , _jsonSerializerSettings ) ;
662+ string payload = JsonConvert . SerializeObject ( message , _serializer . Settings ) ;
663663 byte [ ] payloadBuffer = PayloadEncoding . GetBytes ( payload ) ;
664664
665665 byte [ ] headerBuffer = HeaderEncoding . GetBytes (
@@ -759,7 +759,7 @@ async Task<ServerMessage> ReceiveMessage()
759759 Log . LogDebug ( "Received entire payload ({ReceivedByteCount} bytes)." , received ) ;
760760
761761 string responseBody = PayloadEncoding . GetString ( requestBuffer ) ;
762- ServerMessage message = JsonConvert . DeserializeObject < ServerMessage > ( responseBody , _jsonSerializerSettings ) ;
762+ ServerMessage message = JsonConvert . DeserializeObject < ServerMessage > ( responseBody , _serializer . Settings ) ;
763763
764764 Log . LogDebug ( "Read response body {ResponseBody}." , responseBody ) ;
765765
@@ -892,7 +892,7 @@ private void DispatchRequest(ServerMessage requestMessage)
892892 {
893893 Id = requestMessage . Id ,
894894 Method = requestMessage . Method ,
895- Result = handlerTask . Result != null ? JObject . FromObject ( handlerTask . Result ) : null
895+ Result = handlerTask . Result != null ? JObject . FromObject ( handlerTask . Result , _serializer . JsonSerializer ) : null
896896 } ) ;
897897 }
898898
0 commit comments