/// <summary> /// Parses a .Net XML documentation type, method, or other member name. /// </summary> /// <param name="name"> /// <list> /// <item>Names starting with "T:" are parsed as Type names.</item> /// <item>Names starting with "M:" are parsed as Method names.</item> /// <item>Names starting with "F:" are parsed as Member names.</item> /// <item>Names starting with "P:" are parsed as Member names.</item> /// <item>Names starting with "E:" are parsed as Member names.</item> /// <item>All others are parsed as Member names.</item> /// </list> /// </param> public static DotNetQualifiedName FromVisualStudioXml(string name) { if (String.IsNullOrEmpty(name)) { return(new DotNetQualifiedName()); } if (name.Length < 2 || name[1] != ':') { return(MemberNameFromVisualStudioXml(name)); } switch (name[0]) { case 'T': return(DotNetQualifiedClassName.FromVisualStudioXml(name)); case 'M': return(DotNetQualifiedMethodName.FromVisualStudioXml(name)); case 'F': case 'P': case 'E': return(MemberNameFromVisualStudioXml(name)); default: return(MemberNameFromVisualStudioXml(name)); } }
/// <summary> /// Parse .Net XML documentation for method signature data. /// </summary> /// <param name="memberElement">Expects tag "member".</param> /// <example><![CDATA[<member name="M:Namespace.Type.MethodName(System.Int32,System.String)"></member>]]></example> public static DotNetMethod FromVisualStudioXml(XElement memberElement) { string signature = memberElement.GetAttributeValue("name"); if (signature == null) { return(new DotNetMethod()); } DotNetQualifiedMethodName methodName = DotNetQualifiedMethodName.FromVisualStudioXml(signature); //for constructors bool isConstructor = (methodName.LocalName.EndsWith("#ctor") || methodName.LocalName.EndsWith("#cctor")); bool isStatic = methodName.LocalName.EndsWith("#cctor"); //for destructors bool isDestructor = (methodName.LocalName == "Finalize" && methodName.Parameters.Count == 0); //for operators bool isOperator = methodName.LocalName.StartsWith("op_"); DotNetMethod method = null; if (isConstructor) { method = new DotNetMethodConstructor(methodName, isStatic); } else if (isDestructor) { method = new DotNetMethodDestructor(methodName); } else if (isOperator) { method = new DotNetMethodOperator(methodName); } else { method = new DotNetMethod(methodName); } method.ParseVisualStudioXmlDocumentation(memberElement); return(method); }
/// <summary>Parses .Net XML documentation cref for methods.</summary> /// <example><![CDATA[<permission cref="Namespace.Type.Method(Type1, Type2)">nested comments and/or plain text</permission>]]></example> public static new DotNetCommentMethodLink FromVisualStudioXml(string cref) { DotNetQualifiedMethodName name = DotNetQualifiedMethodName.FromVisualStudioXml(cref); return(new DotNetCommentMethodLink(name)); }