// 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);
}
}
}