| File: Language\TagHelpers\Producers\RenderModeTagHelperProducer.cs | Web Access |
| Project: src\roslyn\src\Razor\src\Compiler\Microsoft.CodeAnalysis.Razor.Compiler\src\Microsoft.CodeAnalysis.Razor.Compiler.csproj (Microsoft.CodeAnalysis.Razor.Compiler) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using Microsoft.AspNetCore.Razor.Language.Components; using Microsoft.CodeAnalysis; namespace Microsoft.AspNetCore.Razor.Language.TagHelpers.Producers; internal sealed partial class RenderModeTagHelperProducer : TagHelperProducer { private static readonly Lazy<TagHelperDescriptor> s_renderModeTagHelper = new(CreateRenderModeTagHelper); private readonly INamedTypeSymbol _iComponentRenderModeType; private RenderModeTagHelperProducer(INamedTypeSymbol iComponentRenderModeType) { _iComponentRenderModeType = iComponentRenderModeType; } public override TagHelperProducerKind Kind => TagHelperProducerKind.RenderMode; public override bool SupportsStaticTagHelpers => true; public override void AddStaticTagHelpers(IAssemblySymbol assembly, ref TagHelperCollection.RefBuilder results) { if (!SymbolEqualityComparer.Default.Equals(assembly, _iComponentRenderModeType.ContainingAssembly)) { return; } results.Add(s_renderModeTagHelper.Value); } private static TagHelperDescriptor CreateRenderModeTagHelper() { using var _ = TagHelperDescriptorBuilder.GetPooledInstance( TagHelperKind.RenderMode, "RenderMode", ComponentsApi.AssemblyName, out var builder); builder.SetTypeName( fullName: "Microsoft.AspNetCore.Components.RenderMode", typeNamespace: "Microsoft.AspNetCore.Components", typeNameIdentifier: "RenderMode"); builder.CaseSensitive = true; builder.ClassifyAttributesOnly = true; builder.SetDocumentation(DocumentationDescriptor.RenderModeTagHelper); builder.TagMatchingRule(rule => { rule.TagName = "*"; rule.Attribute(attribute => { attribute.Name = "@rendermode"; attribute.IsDirectiveAttribute = true; }); }); builder.BindAttribute(attribute => { attribute.SetDocumentation(DocumentationDescriptor.RenderModeTagHelper); attribute.Name = "@rendermode"; attribute.TypeName = ComponentsApi.IComponentRenderMode.FullTypeName; attribute.IsDirectiveAttribute = true; attribute.PropertyName = "RenderMode"; }); return builder.Build(); } }