Esempio n. 1
0
 public static DocumentationComment FromXmlFragment(string xml)
 {
     try
     {
         StringReader      stringReader = new StringReader(xml);
         XmlReaderSettings settings     = new XmlReaderSettings();
         int num = 1;
         settings.ConformanceLevel = (ConformanceLevel)num;
         XmlReader            xmlReader            = XmlReader.Create((TextReader)stringReader, settings);
         DocumentationComment documentationComment = new DocumentationComment();
         documentationComment.FullXmlFragment = xml;
         List <string> list1 = new List <string>();
         List <string> list2 = new List <string>();
         List <string> list3 = new List <string>();
         try
         {
             Dictionary <string, List <string> > dictionary = new Dictionary <string, List <string> >();
             while (!xmlReader.EOF)
             {
                 if (xmlReader.IsStartElement())
                 {
                     string localName = xmlReader.LocalName;
                     if (DocumentationCommentXmlNames.ElementEquals(localName, "example", false) && documentationComment.ExampleText == null)
                     {
                         documentationComment.ExampleText = xmlReader.ReadInnerXml().Trim();
                     }
                     else if (DocumentationCommentXmlNames.ElementEquals(localName, "summary", false) && documentationComment.SummaryText == null)
                     {
                         documentationComment.SummaryText = xmlReader.ReadInnerXml().Trim();
                     }
                     else if (DocumentationCommentXmlNames.ElementEquals(localName, "returns", false) && documentationComment.ReturnsText == null)
                     {
                         documentationComment.ReturnsText = xmlReader.ReadInnerXml().Trim();
                     }
                     else if (DocumentationCommentXmlNames.ElementEquals(localName, "remarks", false) && documentationComment.RemarksText == null)
                     {
                         documentationComment.RemarksText = xmlReader.ReadInnerXml().Trim();
                     }
                     else if (DocumentationCommentXmlNames.ElementEquals(localName, "param", false))
                     {
                         string attribute = xmlReader.GetAttribute("name");
                         string str       = xmlReader.ReadInnerXml();
                         if (!string.IsNullOrWhiteSpace(attribute) && !documentationComment.parameterTexts.ContainsKey(attribute))
                         {
                             list1.Add(attribute);
                             documentationComment.parameterTexts.Add(attribute, str.Trim());
                         }
                     }
                     else if (DocumentationCommentXmlNames.ElementEquals(localName, "typeparam", false))
                     {
                         string attribute = xmlReader.GetAttribute("name");
                         string str       = xmlReader.ReadInnerXml();
                         if (!string.IsNullOrWhiteSpace(attribute) && !documentationComment.typeParameterTexts.ContainsKey(attribute))
                         {
                             list2.Add(attribute);
                             documentationComment.typeParameterTexts.Add(attribute, str.Trim());
                         }
                     }
                     else if (DocumentationCommentXmlNames.ElementEquals(localName, "exception", false))
                     {
                         string attribute = xmlReader.GetAttribute("cref");
                         string str       = xmlReader.ReadInnerXml();
                         if (!string.IsNullOrWhiteSpace(attribute))
                         {
                             if (!dictionary.ContainsKey(attribute))
                             {
                                 list3.Add(attribute);
                                 dictionary.Add(attribute, new List <string>());
                             }
                             dictionary[attribute].Add(str);
                         }
                     }
                     else
                     {
                         xmlReader.Read();
                     }
                 }
                 else
                 {
                     xmlReader.Read();
                 }
             }
             foreach (KeyValuePair <string, List <string> > keyValuePair in dictionary)
             {
                 documentationComment.exceptionTexts.Add(keyValuePair.Key, ImmutableArrayExtensions.AsImmutable <string>((IEnumerable <string>)keyValuePair.Value));
             }
         }
         finally
         {
             documentationComment.ParameterNames     = ImmutableArrayExtensions.AsImmutable <string>((IEnumerable <string>)list1);
             documentationComment.TypeParameterNames = ImmutableArrayExtensions.AsImmutable <string>((IEnumerable <string>)list2);
             documentationComment.ExceptionTypes     = ImmutableArrayExtensions.AsImmutable <string>((IEnumerable <string>)list3);
         }
         return(documentationComment);
     }
     catch             //(Exception ex)
     {
         DocumentationComment documentationComment = new DocumentationComment();
         string str = xml;
         documentationComment.FullXmlFragment = str;
         int num = 1;
         documentationComment.HadXmlParseError = num != 0;
         return(documentationComment);
     }
 }
 public static ImmutableArray <T> AsImmutable <T>(this IEnumerable <T> items)
 => ImmutableArrayExtensions.AsImmutable(items);