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