Exemple #1
0
        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)));
        }
Exemple #2
0
 private T TranslateType <T>(object value)
 => _moduleSerializer.Deserialize <T>(_moduleSerializer.Serialize(value));