public MarkdownDocumentationGenerator(
     DocumentationModel documentationModel,
     DocumentationUrlProvider urlProvider,
     DocumentationOptions options = null,
     SourceReferenceProvider sourceReferenceProvider = null,
     DocumentationResources resources = null) : base(documentationModel, urlProvider: urlProvider, options: options, sourceReferenceProvider: sourceReferenceProvider, resources: resources)
 {
 }
 public SymbolDefinitionHtmlWriter(
     XmlWriter writer,
     SymbolFilterOptions filter  = null,
     DefinitionListFormat format = null,
     SymbolDocumentationProvider documentationProvider = null,
     SourceReferenceProvider sourceReferenceProvider   = null,
     DocumentationDisplayMode documentationDisplayMode = DocumentationDisplayMode.ToolTip) : base(filter, format, documentationProvider)
 {
     _writer = writer;
     SourceReferenceProvider  = sourceReferenceProvider;
     DocumentationDisplayMode = documentationDisplayMode;
 }
        protected override void WriteDefinitionName(ISymbol symbol, SymbolDisplayFormat format = null)
        {
            bool prefixWithContainingNamespace = Layout == SymbolDefinitionListLayout.TypeHierarchy &&
                                                 symbol.IsKind(SymbolKind.NamedType) &&
                                                 !symbol.ContainingNamespace.IsGlobalNamespace;

            if (prefixWithContainingNamespace)
            {
                WriteContainingNamespace(symbol);
            }

            WriteStartElement((IsExternal(symbol)) ? "span" : "b");

            if (DocumentationDisplayMode == DocumentationDisplayMode.ToolTip)
            {
                WriteDocumentationCommentToolTip(symbol);
            }

            string url = SourceReferenceProvider?.GetSourceReferences(symbol).FirstOrDefault().Url
                         ?? WellKnownExternalUrlProviders.MicrosoftDocs.CreateUrl(symbol).Url;

            if (url != null)
            {
                WriteStartElement("a");
                WriteAttributeString("href", url);
            }

            if (prefixWithContainingNamespace)
            {
                format = TypeSymbolDisplayFormats.Name_ContainingTypes_TypeParameters;
            }

            base.WriteDefinitionName(symbol, format);

            if (url != null)
            {
                WriteEndElement();
            }

            WriteEndElement();
        }