コード例 #1
0
        /// <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));
            }
        }
コード例 #2
0
        // 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;
        }
コード例 #3
0
 /// <inheritdoc />
 public override IDocumentation?TryGetDocumentation(MemberId id) =>
 MemberId.Equals(id) ? this : IndexerDocumentation.TryGetDocumentation(id);
コード例 #4
0
 /// <inheritdoc />
 public IDocumentation?TryGetDocumentation(MemberId member) => m_Parent.TryGetDocumentation(member);
コード例 #5
0
 /// <inheritdoc />
 public abstract IDocumentation?TryGetDocumentation(MemberId id);
コード例 #6
0
 /// <inheritdoc />
 public IDocumentation?TryGetDocumentation(MemberId member)
 {
     if (member is TypeId typeId && m_Types.TryGetValue(typeId, out var typeDocumentation))
     {
         return(typeDocumentation);
     }
コード例 #7
0
 /// <inheritdoc />
 public override IDocumentation? TryGetDocumentation(MemberId id) =>
     MemberId.Equals(id) ? this : ConstructorDocumentation.TryGetDocumentation(id);
コード例 #8
0
 /// <inheritdoc />
 public IDocumentation?TryGetDocumentation(MemberId id) =>
 OverloadDocumentation.TryGetDocumentation(id);