Esempio n. 1
0
        private void ProcessMethod(MethodBase method)
        {
            var elements    = new List <XmlElement>();
            var annotations = GetAnnotationAttributes(method).ToArray();

            if (annotations.Any())
            {
                foreach (var annotation in annotations)
                {
                    elements.Add(this.CreateElementForAnnotation(annotation));
                }
            }

            foreach (var parameter in method.GetParameters())
            {
                var element = this.CreateParameterElement(parameter);
                if (element != null)
                {
                    elements.Add(element);
                }
            }

            if (elements.Any())
            {
                var id      = XmlDocIdGenerator.GetId(method);
                var element = this._rootElement.OwnerDocument !.CreateElement("member");
                element.SetAttribute("name", id);
                elements.ForEach(x => element.AppendChild(x));
                this._rootElement.AppendChild(element);
            }
        }
Esempio n. 2
0
        private XmlElement CreateElementForAnnotation(CustomAttributeData annotation)
        {
            var result = this.Document.CreateElement("attribute");

            result.SetAttribute("ctor", XmlDocIdGenerator.GetId(annotation.Constructor));
            foreach (var argument in annotation.ConstructorArguments)
            {
                var argElement = this.Document.CreateElement("argument");
                if (argument.Value is string str)
                {
                    argElement.InnerText = str;
                }
                else
                {
                    argElement.InnerText = argument.Value?.ToString() ?? "";
                }

                result.AppendChild(argElement);
            }

            return(result);
        }