private static string GetXmlDocumentation(this MemberInfo member, XDocument xml)
        {
            var name          = GetMemberElementName(member);
            var documentation = FullDotNetMethods.XPathEvaluate(xml, string.Format("string(/doc/members/member[@name='{0}']/summary)", name)).ToString().Trim();

            return(RemoveLineBreakWhiteSpaces(documentation));
        }
예제 #2
0
        private static string GetXmlDocumentation(this ParameterInfo parameter, XDocument xml)
        {
            var name = GetMemberElementName(parameter.Member);

            if (parameter.IsRetval || string.IsNullOrEmpty(parameter.Name))
            {
                return(FullDotNetMethods.XPathEvaluate(xml, string.Format("string(/doc/members/member[@name='{0}']/returns)", name)).ToString().Trim());
            }
            else
            {
                return(FullDotNetMethods.XPathEvaluate(xml, string.Format("string(/doc/members/member[@name='{0}']/param[@name='{1}'])", name, parameter.Name)).ToString().Trim());
            }
        }
예제 #3
0
        private static string GetXmlDocumentationPath(dynamic assembly)
        {
            var assemblyName = assembly.GetName();
            var path         = FullDotNetMethods.PathCombine(FullDotNetMethods.PathGetDirectoryName(assembly.Location), assemblyName.Name + ".xml");

            if (FullDotNetMethods.FileExists(path))
            {
                return(path);
            }

            dynamic currentDomain = Type.GetType("System.AppDomain").GetRuntimeProperty("CurrentDomain").GetValue(null);

            path = FullDotNetMethods.PathCombine(currentDomain.BaseDirectory, assemblyName.Name + ".xml");
            if (FullDotNetMethods.FileExists(path))
            {
                return(path);
            }

            return(FullDotNetMethods.PathCombine(currentDomain.BaseDirectory, "bin\\" + assemblyName.Name + ".xml"));
        }
예제 #4
0
        /// <summary>Returns the contents of the "summary" XML documentation tag for the specified member.</summary>
        /// <param name="member">The reflected member.</param>
        /// <param name="pathToXmlFile">The path to the XML documentation file.</param>
        /// <returns>The contents of the "summary" tag for the member.</returns>
        public static string GetXmlDocumentation(this MemberInfo member, string pathToXmlFile)
        {
            try
            {
                lock (_lock)
                {
                    if (pathToXmlFile == null || FullDotNetMethods.SupportsFullDotNetMethods == false)
                    {
                        return(string.Empty);
                    }

                    var assemblyName = member.Module.Assembly.GetName();
                    if (_cache.ContainsKey(assemblyName.FullName) && _cache[assemblyName.FullName] == null)
                    {
                        return(string.Empty);
                    }

                    if (!FullDotNetMethods.FileExists(pathToXmlFile))
                    {
                        _cache[assemblyName.FullName] = null;
                        return(string.Empty);
                    }

                    if (!_cache.ContainsKey(assemblyName.FullName))
                    {
                        _cache[assemblyName.FullName] = XDocument.Load(pathToXmlFile);
                    }

                    return(GetXmlDocumentation(member, _cache[assemblyName.FullName]));
                }
            }
            catch
            {
                return(string.Empty);
            }
        }