// Internal for testing i.e. for confirming above constructor sets IsStringProperty as expected.
 internal TagHelperAttributeDescriptor(
     [NotNull] string name,
     [NotNull] string propertyName,
     [NotNull] string typeName,
     bool isIndexer,
     bool isStringProperty,
     TagHelperAttributeDesignTimeDescriptor designTimeDescriptor)
 {
     Name                 = name;
     PropertyName         = propertyName;
     TypeName             = typeName;
     IsIndexer            = isIndexer;
     IsStringProperty     = isStringProperty;
     DesignTimeDescriptor = designTimeDescriptor;
 }
 /// <summary>
 /// Instantiates a new instance of the <see cref="TagHelperAttributeDescriptor"/> class.
 /// </summary>
 /// <param name="name">
 /// The HTML attribute name or, if <paramref name="isIndexer"/> is <c>true</c>, the prefix for matching
 /// attribute names.
 /// </param>
 /// <param name="propertyName">The name of the CLR property that corresponds to the HTML attribute.</param>
 /// <param name="typeName">
 /// The full name of the named (see <paramref name="propertyName"/>) property's <see cref="Type"/> or,
 /// if <paramref name="isIndexer"/> is <c>true</c>, the full name of the indexer's value <see cref="Type"/>.
 /// </param>
 /// <param name="isIndexer">
 /// If <c>true</c> this <see cref="TagHelperAttributeDescriptor"/> is used for dictionary indexer assignments.
 /// Otherwise this <see cref="TagHelperAttributeDescriptor"/> is used for property assignment.
 /// </param>
 /// <param name="designTimeDescriptor">The <see cref="TagHelperAttributeDesignTimeDescriptor"/> that contains
 /// design time information about this attribute.</param>
 /// <remarks>
 /// HTML attribute names are matched case-insensitively, regardless of <paramref name="isIndexer"/>.
 /// </remarks>
 public TagHelperAttributeDescriptor(
     [NotNull] string name,
     [NotNull] string propertyName,
     [NotNull] string typeName,
     bool isIndexer,
     TagHelperAttributeDesignTimeDescriptor designTimeDescriptor)
     : this(
         name,
         propertyName,
         typeName,
         isIndexer,
         isStringProperty : string.Equals(typeName, typeof(string).FullName, StringComparison.Ordinal),
         designTimeDescriptor : designTimeDescriptor)
 {
 }