diff options
Diffstat (limited to 'tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs')
-rw-r--r-- | tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs index 31e4349..22587ac 100644 --- a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs +++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/ResolveReferenceLinksComponent2.cs @@ -1,5 +1,8 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// +// Copyright © Microsoft Corporation. +// This source file is subject to the Microsoft Permissive License. +// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx. +// All other rights reserved. + using System; using System.Collections.Generic; using System.IO; @@ -185,15 +188,31 @@ namespace Microsoft.Ddue.Tools { } else { // if overload is prefered and found, change targetId and make link options hide parameters if (link.PreferOverload) { + + bool isConversionOperator = false; + + MethodTarget method = target as MethodTarget; + if (method != null) { + isConversionOperator = method.conversionOperator; + } + MemberTarget member = target as MemberTarget; - if ((member != null) && (!String.IsNullOrEmpty(member.OverloadId))) { + + // if conversion operator is found, always link to individual topic. + if ((member != null) && (!String.IsNullOrEmpty(member.OverloadId)) && !isConversionOperator) { Target overloadTarget = targets[member.OverloadId]; if (overloadTarget != null) { target = overloadTarget; targetId = overloadTarget.Id; } } - options = options & ~DisplayOptions.ShowParameters; + + // if individual conversion operator is found, always display parameters. + if (isConversionOperator && member != null && (!string.IsNullOrEmpty(member.OverloadId))) { + options = options | DisplayOptions.ShowParameters; + } else { + options = options & ~DisplayOptions.ShowParameters; + } } // get stored link type @@ -326,6 +345,11 @@ namespace Microsoft.Ddue.Tools { fragment.WriteTo(writer); //writer.WriteRaw(output); + } + else if ((String.Compare(link.DisplayTarget, "extension", true) == 0) && (link.Contents != null)) + { + Reference extMethodReference = XmlTargetCollectionUtilities.CreateExtensionMethodReference(link.Contents); + resolver.WriteReference(extMethodReference, options, writer); } else { // Use the display target value as a CER for the display target |