/// <summary>
        /// Gets the containing class namespace.
        /// </summary>
        /// <param name="root">The root.</param>
        /// <returns></returns>
        public IEnumerable <ControllerActionModel> GetMethods(ClassDeclarationSyntax classDeclarationSyntax, SemanticModel semanticModel, ControllerModel controllerModel, Compilation compilation)
        {
            var actions = new List <ControllerActionModel>();

            foreach (var method in classDeclarationSyntax.DescendantNodes().OfType <MethodDeclarationSyntax>())
            {
                var trivias          = method.GetLeadingTrivia();
                var xmlCommentTrivia = trivias.FirstOrDefault(t => t.Kind() == SyntaxKind.SingleLineDocumentationCommentTrivia);
                var xml   = xmlCommentTrivia.GetStructure();
                var nodes = xml.DescendantNodes().Where(x => x.IsKind(SyntaxKind.XmlElement)).ToList();
                foreach (var n in nodes)
                {
                    var kids = n.ChildNodes().ToList();
                }
                Console.WriteLine(xml);
                logger.LogDebug($"{classDeclarationSyntax.Identifier.ToFullString().Trim()}.{method.Identifier.ToFullString().Trim()}");

                var action = new ControllerActionModel
                {
                    ActionName = method.Identifier.ValueText,
                    Summary    = ""
                };
                GetMethodParameters(method, semanticModel, action, compilation);
                actions.Add(action);
            }
            return(actions);
        }
        public void GetMethodParameters(MethodDeclarationSyntax methodDeclaration, SemanticModel semanticModel, ControllerActionModel controllerActionModel, Compilation compilation)
        {
            var list                = methodDeclaration.AttributeLists.SelectMany(a => a.Attributes).ToList();
            var parameters          = new List <ControllerActionParameter>();
            var parameterListSyntax = methodDeclaration.ChildNodes().OfType <ParameterListSyntax>().FirstOrDefault();

            foreach (var parameterSyntax in parameterListSyntax.Parameters)
            {
                var symbol = semanticModel.GetDeclaredSymbol(parameterSyntax);
                if (symbol == null)
                {
                    continue;
                }
                var type = symbol.Type as INamedTypeSymbol;
                if (type == null)
                {
                    continue;
                }

                var controllerParameter = new ControllerActionParameter
                {
                    ParameterName          = parameterSyntax.Identifier.ValueText,
                    Required               = !symbol.HasExplicitDefaultValue,
                    ParameterTypeName      = type.ToString(),
                    ParameterTypeNamespace = type.ContainingNamespace.ToString()
                };
                if (type.ContainingNamespace.IsGlobalNamespace)
                {
                    //var location = type.Locations.FirstOrDefault();
                    //var tree = location?.SourceTree;

                    //var root = tree.GetCompilationUnitRoot();
                    //var model = compilation.GetSemanticModel(tree);
                    //var ns = GetNamespace(root);

                    //controllerParameter.ParameterTypeNamespace = GetNamespace(root);
                }
                parameters.Add(controllerParameter);
                //var blockMethodParameter = BlockFactory.ParameterProvider.BlockMethodParameterFromMethodDeclaration(parameterSyntax, semanticModel, blockMethod);
                //if (blockMethodParameter != null)
                //{
                //    blockMethod.Parameters.Add(blockMethodParameter);
                //}
            }
            controllerActionModel.Parameters = parameters;
        }