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 }); }