/// <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);
        }
Exemple #3
0
        /// <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)));
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        /// <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));
        }