コード例 #1
0
        public static Identifier FromMemberInfo(MemberInfo memberInfo)
        {
            var assembly = memberInfo.ReflectedType.Assembly;
            var documentationProvider = XmlDocumentationProvider.GetDocumentationProvider(assembly);

            var    name          = memberInfo.Name;
            string documentation = null;

            var propertyInfo = memberInfo as PropertyInfo;

            if (propertyInfo != null)
            {
                documentation = string.Concat(GetTypeName(propertyInfo.PropertyType.Name), " ", name,
                                              ParseDocumentation(documentationProvider.GetDocumentationForSymbol("P:" + propertyInfo.ReflectedType.FullName + "." + propertyInfo.Name)));
            }
            else
            {
                var methodInfo = memberInfo as MethodInfo;
                if (methodInfo != null)
                {
                    var prefix     = methodInfo.IsDefined(typeof(ExtensionAttribute), false) ? "(extension) " : "";
                    var parameters = string.Join(",", methodInfo.GetParameters().Select(p => p.ParameterType.FullName));
                    var typName    = $"M:{methodInfo.ReflectedType.FullName}.{methodInfo.Name}({parameters})";

                    documentation = string.Concat(prefix, GetTypeName(methodInfo.ReturnType.Name), " ", name,
                                                  ParseDocumentation(documentationProvider.GetDocumentationForSymbol(typName)));
                }
            }

            return(new Identifier
            {
                Name = name,
                QuickInfo = documentation
            });
        }