/// <inheritdoc /> public IDocumentation?TryGetDocumentation(MemberId id) { switch (id) { case TypeId typeId when typeId.Equals(TypeId): return(this); case FieldId fieldId when fieldId.DefiningType.Equals(TypeId): return(m_Fields.GetValueOrDefault(fieldId)); case EventId eventId when eventId.DefiningType.Equals(TypeId): return(m_Events.GetValueOrDefault(eventId)); case PropertyId propertyId when propertyId.DefiningType.Equals(TypeId) && propertyId.Parameters.Count == 0: return(m_Properties.GetValueOrDefault(propertyId)); case PropertyId propertyId when propertyId.DefiningType.Equals(TypeId) && propertyId.Parameters.Count > 0: return(m_Indexers.GetValueOrDefault(propertyId.Name)); case MethodId methodId when methodId.DefiningType.Equals(TypeId): if (methodId.IsConstructor()) { return(Constructors !.TryGetDocumentation(methodId)); } if (m_Methods.ContainsKey(methodId.Name)) { return(m_Methods[methodId.Name].TryGetDocumentation(methodId)); } var operatorKind = methodId.GetOperatorKind(); if (operatorKind.HasValue && m_Operators.ContainsKey(operatorKind.Value)) { return(m_Operators[operatorKind.Value].TryGetDocumentation(methodId)); } return(null); default: return(AssemblyDocumentation.TryGetDocumentation(id)); } }
// private protected constructor => prevent implementation outside of this assembly private protected SimpleMemberDocumentation(TypeDocumentation typeDocumentation, MemberId memberId, IXmlDocsProvider xmlDocsProvider, ICustomAttributeProvider definitionAttributes) : base(typeDocumentation) { if (xmlDocsProvider == null) { throw new ArgumentNullException(nameof(xmlDocsProvider)); } MemberId = memberId ?? throw new ArgumentNullException(nameof(memberId)); definitionAttributes = definitionAttributes ?? throw new ArgumentNullException(nameof(definitionAttributes)); var documentationComments = xmlDocsProvider.TryGetDocumentationComments(memberId); Summary = documentationComments?.Summary ?? TextBlock.Empty; Remarks = documentationComments?.Remarks ?? TextBlock.Empty; SeeAlso = documentationComments?.SeeAlso?.AsReadOnlyList() ?? Array.Empty <SeeAlsoElement>(); Example = documentationComments?.Example ?? TextBlock.Empty; IsObsolete = definitionAttributes.IsObsolete(out var obsoleteMessage); ObsoleteMessage = obsoleteMessage; }
/// <inheritdoc /> public override IDocumentation?TryGetDocumentation(MemberId id) => MemberId.Equals(id) ? this : IndexerDocumentation.TryGetDocumentation(id);
/// <inheritdoc /> public IDocumentation?TryGetDocumentation(MemberId member) => m_Parent.TryGetDocumentation(member);
/// <inheritdoc /> public abstract IDocumentation?TryGetDocumentation(MemberId id);
/// <inheritdoc /> public IDocumentation?TryGetDocumentation(MemberId member) { if (member is TypeId typeId && m_Types.TryGetValue(typeId, out var typeDocumentation)) { return(typeDocumentation); }
/// <inheritdoc /> public override IDocumentation? TryGetDocumentation(MemberId id) => MemberId.Equals(id) ? this : ConstructorDocumentation.TryGetDocumentation(id);
/// <inheritdoc /> public IDocumentation?TryGetDocumentation(MemberId id) => OverloadDocumentation.TryGetDocumentation(id);