private IList<ParamElement> VisitParam(ParameterInfo[] @params) { IList<ParamElement> elements = new List<ParamElement>(); foreach (var param in @params) { var paramElement = new ParamElement() { name = param.Name }; var paramAttribute = param.GetDependencyDefaultValueOnParameter(); if (paramAttribute != null) { var valueElement = new ValueElement() { value = paramAttribute.Value != null ? paramAttribute.Value.ToString() : null, type = paramAttribute.Value.GetType().ToString() }; paramElement.Item = valueElement; elements.Add(paramElement); continue; } var dependencyAttribute = param.GetDependencyInjectionOnParameter(); if (dependencyAttribute != null && dependencyAttribute.DefaultValue != null) { var valueElement = new ValueElement() { value = dependencyAttribute.DefaultValue != null ? dependencyAttribute.DefaultValue.ToString() : null, type = dependencyAttribute.DefaultValue.GetType().ToString() }; paramElement.Item = valueElement; elements.Add(paramElement); } else if (dependencyAttribute != null) { var dependencyElement = new DependencyElement() { key = dependencyAttribute.Key != null ? dependencyAttribute.Key.ToString() : null, typeOfContract = param.ParameterType.AssemblyQualifiedName }; paramElement.Item = dependencyElement; elements.Add(paramElement); } else { var dependencyElement = new DependencyElement() { key = null, typeOfContract = param.ParameterType.AssemblyQualifiedName }; paramElement.Item = dependencyElement; elements.Add(paramElement); } } return elements; }