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; }