public MicroserviceMessageHandler(MessageName name, Type type, MethodInfo method, HandlerParameterDeserializer deserializer) { Name = name; _type = type; _method = method; _deserializer = deserializer; }
private List<object> CollectParameters(IMessage message, HandlerParameterDeserializer handlerParameterDeserializer, IServicesContainer servicesContainer) { var parameters = new List<object>(); foreach (var p in _method.GetParameters()) { object value = null; if (p.IsRetval) continue; if (p.HasDefaultValue) value = p.DefaultValue; servicesContainer.TryToResolve(p.ParameterType, out value); if (value == null) { var obj = message.ValueAsObject(); var msgItem = obj[p.Name]; value = handlerParameterDeserializer.Deserialize(p.ParameterType, msgItem); } parameters.Add(value); } return parameters; }