// 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; using System.Collections.Generic; using System.Linq; namespace Microsoft.AspNetCore.Razor.Language { /// /// A metadata class describing a tag helper attribute. /// public abstract class BoundAttributeDescriptor : IEquatable { protected BoundAttributeDescriptor(string kind) { Kind = kind; } public string Kind { get; } public bool IsIndexerStringProperty { get; protected set; } public bool IsIndexerBooleanProperty { get; protected set; } public bool IsEnum { get; protected set; } public bool IsStringProperty { get; protected set; } public bool IsBooleanProperty { get; protected set; } public string Name { get; protected set; } public string IndexerNamePrefix { get; protected set; } public string TypeName { get; protected set; } public string IndexerTypeName { get; protected set; } public bool HasIndexer { get; protected set; } public string Documentation { get; protected set; } public string DisplayName { get; protected set; } public IReadOnlyList Diagnostics { get; protected set; } public IReadOnlyDictionary Metadata { get; protected set; } public bool HasErrors { get { var errors = Diagnostics.Any(diagnostic => diagnostic.Severity == RazorDiagnosticSeverity.Error); return errors; } } public override string ToString() { return DisplayName ?? base.ToString(); } public bool Equals(BoundAttributeDescriptor other) { return BoundAttributeDescriptorComparer.Default.Equals(this, other); } public override bool Equals(object obj) { return Equals(obj as BoundAttributeDescriptor); } public override int GetHashCode() { return BoundAttributeDescriptorComparer.Default.GetHashCode(this); } } }