/// <summary> /// Get element documentation /// </summary> public static string GetElementDocumentation(MethodInfo method, MetaDataElementType docType = MetaDataElementType.Summary) { var docName = $"M:{method.DeclaringType.FullName}.{method.Name}({String.Join(",", method.GetParameters().Select(o=>o.ParameterType.FullName))})"; var cacheName = $"{docName}@{docType}"; var retVal = method.GetCustomAttribute <DescriptionAttribute>()?.Description; if (String.IsNullOrEmpty(retVal) && !s_documentationCache.TryGetValue(cacheName, out retVal)) // Attempt to load the documentation from disk { retVal = GetElementDocumentation(method.DeclaringType.Assembly, docName, docType.ToString().ToLower()); lock (s_documentationCache) if (!s_documentationCache.ContainsKey(cacheName)) { s_documentationCache.Add(cacheName, retVal); } } return(retVal); }
/// <summary> /// Get element documentation /// </summary> public static string GetElementDocumentation(Type type, MetaDataElementType docType = MetaDataElementType.Summary) { var docName = $"T:{type.FullName}"; var cacheName = $"{docName}@{docType}"; var retVal = type.GetCustomAttribute <DescriptionAttribute>()?.Description; if (String.IsNullOrEmpty(retVal) && !s_documentationCache.TryGetValue(cacheName, out retVal)) // Attempt to load the documentation from disk { retVal = GetElementDocumentation(type.Assembly, docName, docType.ToString().ToLower()); lock (s_documentationCache) if (!s_documentationCache.ContainsKey(cacheName)) { s_documentationCache.Add(cacheName, retVal); } } return(retVal); }
/// <summary> /// Get element documentation /// </summary> public static string GetElementDocumentation(PropertyInfo property, MetaDataElementType docType = MetaDataElementType.Summary) { var declType = property.DeclaringType.FullName; if (property.DeclaringType.IsGenericType) { declType = declType.Substring(0, declType.IndexOf("[")); } var docName = $"P:{declType}.{property.Name}"; var cacheName = $"{docName}@{docType}"; var retVal = property.GetCustomAttribute <DescriptionAttribute>()?.Description; if (String.IsNullOrEmpty(retVal) && !s_documentationCache.TryGetValue(cacheName, out retVal)) // Attempt to load the documentation from disk { retVal = GetElementDocumentation(property.DeclaringType.Assembly, docName, docType.ToString().ToLower()); lock (s_documentationCache) if (!s_documentationCache.ContainsKey(cacheName)) { s_documentationCache.Add(cacheName, retVal); } } return(retVal); }