/// <summary> /// Parse .Net XML documentation for Event data. /// </summary> /// <param name="memberElement">Expects tag name "member".</param> /// <example><![CDATA[<member name="E:Namespace.Type.EventName"></member>]]></example> public static new DotNetEvent FromVisualStudioXml(XElement memberElement) { DotNetQualifiedName name = DotNetQualifiedName.FromVisualStudioXml(memberElement.GetAttributeValue("name")); DotNetEvent eventMember = new DotNetEvent(name); eventMember.ParseVisualStudioXmlDocumentation(memberElement); return eventMember; }
/// <summary> /// Parse .Net XML documentation for Field data. /// </summary> /// <param name="memberElement">Expects tag name "member".</param> /// <example><![CDATA[<member name="F:Namespace.Type.FieldName"></member>]]></example> public static DotNetField FromVisualStudioXml(XElement memberElement) { DotNetQualifiedName name = DotNetQualifiedName.FromVisualStudioXml(memberElement.GetAttributeValue("name")); DotNetField field = new DotNetField(name); field.ParseVisualStudioXmlDocumentation(memberElement); return(field); }
/// <summary>Parses .Net XML documentation cref.</summary> public static new DotNetCommentQualifiedLink FromVisualStudioXml(string cref) { int divider = cref.IndexOf("("); if (divider > -1 || cref.StartsWith("M:")) { return(DotNetCommentMethodLink.FromVisualStudioXml(cref)); } return(new DotNetCommentQualifiedLink(DotNetQualifiedName.FromVisualStudioXml(cref))); }
/// <summary> /// Parse .Net XML documentation for Indexer data. /// </summary> /// <param name="memberElement">Expects tag name "member".</param> /// <example><![CDATA[<member name="P:Namespace.Type.Item(System.Int32)"></member>]]></example> public static new DotNetIndexer FromVisualStudioXml(XElement memberElement) { string xmlName = memberElement.GetAttributeValue("name"); string xmlParameters = xmlName.Substring(xmlName.IndexOf("(")); xmlName = xmlName.Substring(0, xmlName.IndexOf("(")); DotNetQualifiedName name = DotNetQualifiedName.FromVisualStudioXml(xmlName); List <DotNetParameter> parameters = DotNetQualifiedMethodName.ParametersFromVisualStudioXml(xmlParameters); DotNetIndexer indexer = new DotNetIndexer(name, parameters); indexer.ParseVisualStudioXmlDocumentation(memberElement); return(indexer); }
/// <summary> /// Parse .Net XML documentation for Property data. /// </summary> /// <param name="memberElement">Expects tag name "member".</param> /// <example><![CDATA[<member name="P:Namespace.Type.PropertyName"></member>]]></example> public static new DotNetProperty FromVisualStudioXml(XElement memberElement) { string xmlName = memberElement.GetAttributeValue("name"); if (xmlName.IndexOf("(") > -1) { return(DotNetIndexer.FromVisualStudioXml(memberElement)); } DotNetQualifiedName name = DotNetQualifiedName.FromVisualStudioXml(xmlName); DotNetProperty property = new DotNetProperty(name); property.ParseVisualStudioXmlDocumentation(memberElement); return(property); }
/// <summary> /// Parses a .Net XML documentation member name. /// </summary> /// <remarks> /// There is no support for generic types here because .Net XMl documentation does not include member types, just the names. /// </remarks> /// <remarks> /// Does not parse method names; use DotNetQualifiedMethodName.FromVisualStudioXml(string) instead. /// </remarks> /// <example> /// Expected formats: /// - "F:NamespaceA.NamespaceB.MemberC" /// - "P:NamespaceA.NamespaceB.MemberC" /// - "E:NamespaceA.NamespaceB.MemberC" /// - "NamespaceA.NamespaceB.MemberC" /// - "NamespaceA.NamespaceB.InterfaceNamespace#Interface#MemberC" /// </example> /// <param name="name">Name may or may not start with /[FPE]:/</param> private static DotNetQualifiedName MemberNameFromVisualStudioXml(string name) { if (name.StartsWith("F:")) { name = name.Substring(2); } if (name.StartsWith("P:")) { name = name.Substring(2); } if (name.StartsWith("E:")) { name = name.Substring(2); } int divider = name.LastIndexOf('.'); string localName = name; string fullNamespace = null; if (divider != -1) { localName = name.Substring(divider + 1); fullNamespace = name.Substring(0, divider); } DotNetQualifiedName explicitInterface = null; if (localName.Contains("#")) { int lastIndex = localName.LastIndexOf("#"); string interfaceName = localName.Substring(0, lastIndex).Replace("#", "."); explicitInterface = DotNetQualifiedName.FromVisualStudioXml(interfaceName); localName = localName.Substring(lastIndex + 1); } if (String.IsNullOrEmpty(fullNamespace)) { return(new DotNetQualifiedName(localName, explicitInterface)); } return(new DotNetQualifiedName(localName, DotNetQualifiedClassName.FromVisualStudioXml(fullNamespace), explicitInterface)); }