コード例 #1
0
        public static XmlElement GetXmlFromMember(MethodBase method, bool throwError = true)
        {
            if (method == null)
            {
                throw new ArgumentNullException(nameof(method));
            }

            // Calculate the parameter string as this is in the member name in the XML
            var parameters = new List <string>();

            foreach (var parameterInfo in method.GetParameters())
            {
                parameters.Add(DocsTypeService.GetTypeFullNameForXmlDoc(parameterInfo.ParameterType, parameterInfo.IsOut | parameterInfo.ParameterType.IsByRef, true));
            }

            //AL: 15.04.2008 ==> BUG-FIX remove “()” if parametersString is empty
            if (parameters.Count > 0)
            {
                //JA: 11.8.2016 Add ``1 to end of the resulting name if the method is a generic method
                var result = DocsTypeService.GetXmlFromName(method.DeclaringType, 'M', string.Format("{0}{1}{2}", method.Name, method.IsGenericMethod ? "``1" : string.Empty, string.Format("({0})", string.Join(",", parameters))), false);

                // Try a fallback for case where a method with generic parameters is defined on base class.
                if (result == null)
                {
                    var typedParameters = new List <string>();

                    for (var i = 1; i <= parameters.Count; i++)
                    {
                        typedParameters.Add(string.Format("`{0}", i));
                    }

                    return(DocsTypeService.GetXmlFromName(method.DeclaringType, 'M', string.Format(method.Name + "({0})", string.Join(",", typedParameters)), throwError));
                }

                if (result == null && throwError)
                {
                    ThrowHelper.ThrowDocNotFound();
                }

                return(result);
            }
            else
            {
                return(DocsTypeService.GetXmlFromName(method.DeclaringType, 'M', method.Name, throwError));
            }
        }
コード例 #2
0
        public static XmlElement GetXmlFromMember(MemberInfo member, bool throwError = true)
        {
            if (member == null)
            {
                throw new ArgumentNullException(nameof(member));
            }

            // First character [0] of member type is prefix character in the name in the XML.
            var prefix = member.MemberType.ToString()[0];

            ParameterInfo[] parameters   = null;
            var             propertyInfo = member as PropertyInfo;

            if (propertyInfo != null && propertyInfo.CanRead)
            {
                parameters = propertyInfo.GetGetMethod().GetParameters();
            }

            var strParameters = new List <string>();

            // Handles getter/setter style properties.
            if (parameters != null && parameters.Length > 0)
            {
                foreach (ParameterInfo parameterInfo in parameters)
                {
                    strParameters.Add(DocsTypeService.GetTypeFullNameForXmlDoc(parameterInfo.ParameterType, parameterInfo.IsOut | parameterInfo.ParameterType.IsByRef, true));
                }

                return(DocsTypeService.GetXmlFromName(member.ReflectedType, prefix, string.Format(member.Name + "({0})", string.Join(",", strParameters)), throwError));
            }
            //handles regular properties
            else
            {
                return(DocsTypeService.GetXmlFromName(member.DeclaringType, member.MemberType.ToString()[0], member.Name, throwError));
            }
        }
コード例 #3
0
 public static XmlElement GetXmlFromType(Type type, bool throwError = true)
 {
     // Prefix in type names is T
     return(DocsTypeService.GetXmlFromName(type, 'T', "", throwError));
 }