diff --git a/src/Razor/Microsoft.CodeAnalysis.Razor/src/ComponentDetectionConventions.cs b/src/Razor/Microsoft.CodeAnalysis.Razor/src/ComponentDetectionConventions.cs new file mode 100644 index 0000000000..214f9e36a4 --- /dev/null +++ b/src/Razor/Microsoft.CodeAnalysis.Razor/src/ComponentDetectionConventions.cs @@ -0,0 +1,28 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace Microsoft.CodeAnalysis.Razor +{ + internal static class ComponentDetectionConventions + { + public static bool IsComponent(INamedTypeSymbol symbol, INamedTypeSymbol icomponentSymbol) + { + if (symbol is null) + { + throw new ArgumentNullException(nameof(symbol)); + } + + if (icomponentSymbol is null) + { + throw new ArgumentNullException(nameof(icomponentSymbol)); + } + + return + symbol.DeclaredAccessibility == Accessibility.Public && + !symbol.IsAbstract && + symbol.AllInterfaces.Contains(icomponentSymbol); + } + } +} diff --git a/src/Razor/Microsoft.CodeAnalysis.Razor/src/ComponentTagHelperDescriptorProvider.cs b/src/Razor/Microsoft.CodeAnalysis.Razor/src/ComponentTagHelperDescriptorProvider.cs index f160b53a90..ebc1947ca7 100644 --- a/src/Razor/Microsoft.CodeAnalysis.Razor/src/ComponentTagHelperDescriptorProvider.cs +++ b/src/Razor/Microsoft.CodeAnalysis.Razor/src/ComponentTagHelperDescriptorProvider.cs @@ -573,10 +573,8 @@ namespace Microsoft.CodeAnalysis.Razor return false; } - return - symbol.DeclaredAccessibility == Accessibility.Public && - !symbol.IsAbstract && - symbol.AllInterfaces.Contains(_symbols.IComponent); + var isComponent = ComponentDetectionConventions.IsComponent(symbol, _symbols.IComponent); + return isComponent; } } } diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/Sdk/Sdk.Razor.StaticAssets.ProjectSystem.props b/src/Razor/Microsoft.NET.Sdk.Razor/src/Sdk/Sdk.Razor.StaticAssets.ProjectSystem.props index f54b74ebf4..beb01baa38 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/Sdk/Sdk.Razor.StaticAssets.ProjectSystem.props +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/Sdk/Sdk.Razor.StaticAssets.ProjectSystem.props @@ -28,8 +28,13 @@ Copyright (c) .NET Foundation. All rights reserved. - - + + + + + + + diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.DesignTime.targets b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.DesignTime.targets index 0b27cfce4a..4d8e0b5c4d 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.DesignTime.targets +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.DesignTime.targets @@ -47,6 +47,17 @@ Copyright (c) .NET Foundation. All rights reserved. + + + + + + +