public async Task <TResult> RequestAsync <TResult>(string path, object request) where TResult : class { var registration = _moduleRegistry.GetRequestRegistration(path); if (registration is null) { throw new InvalidOperationException($"No action has been defined for path: {path}"); } if (request is IMessage message) { // A synchronous request message.Id = Guid.Empty; } var receiverRequest = TranslateType(request, registration.RequestType); var result = await registration.Action(receiverRequest); return(_serializer.Deserialize <TResult>(_serializer.Serialize(result))); }
private T TranslateType <T>(object value) => _moduleSerializer.Deserialize <T>(_moduleSerializer.Serialize(value));