diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs
index 3eff0ea711..d1c276caac 100644
--- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs
+++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs
@@ -497,7 +497,7 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp
private static bool IsStringAttribute(TagHelperAttributeDescriptor attributeDescriptor)
{
- return attributeDescriptor.PropertyInfo.PropertyType == typeof(string);
+ return attributeDescriptor.AttributeTypeName == typeof(string).FullName;
}
private static bool TryGetPlainTextValue(Chunk chunk, out string plainText)
diff --git a/src/Microsoft.AspNet.Razor/TagHelpers/TagHelperAttributeDescriptor.cs b/src/Microsoft.AspNet.Razor/TagHelpers/TagHelperAttributeDescriptor.cs
index 17529bc8ae..528dfeb611 100644
--- a/src/Microsoft.AspNet.Razor/TagHelpers/TagHelperAttributeDescriptor.cs
+++ b/src/Microsoft.AspNet.Razor/TagHelpers/TagHelperAttributeDescriptor.cs
@@ -16,11 +16,27 @@ namespace Microsoft.AspNet.Razor.TagHelpers
/// The HTML attribute name.
/// The for the tag
/// helper attribute
+ public TagHelperAttributeDescriptor(string attributeName, PropertyInfo propertyInfo)
+ : this(attributeName, propertyInfo.Name, propertyInfo.PropertyType.FullName)
+ {
+ }
+
+ ///
+ /// Instantiates a new class.
+ ///
+ /// The HTML attribute name.
+ /// The name of the CLR property name that corresponds to the HTML
+ /// attribute name.
+ ///
+ /// The full name of the that corresponds to the HTML attribute.
+ ///
public TagHelperAttributeDescriptor(string attributeName,
- PropertyInfo propertyInfo)
+ string attributePropertyName,
+ string attributeTypeName)
{
AttributeName = attributeName;
- PropertyInfo = propertyInfo;
+ AttributePropertyName = attributePropertyName;
+ AttributeTypeName = attributeTypeName;
}
///
@@ -31,17 +47,11 @@ namespace Microsoft.AspNet.Razor.TagHelpers
///
/// The name of the CLR property name that corresponds to the HTML attribute name.
///
- public string AttributePropertyName
- {
- get
- {
- return PropertyInfo.Name;
- }
- }
+ public string AttributePropertyName { get; private set; }
///
- /// The for the tag helper attribute
+ /// The full name of the that corresponds to the HTML attribute.
///
- public PropertyInfo PropertyInfo { get; private set; }
+ public string AttributeTypeName { get; private set; }
}
}
\ No newline at end of file
diff --git a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/CompleteTagHelperDescriptorComparer.cs b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/CompleteTagHelperDescriptorComparer.cs
index cae296645c..2177d96646 100644
--- a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/CompleteTagHelperDescriptorComparer.cs
+++ b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/CompleteTagHelperDescriptorComparer.cs
@@ -44,7 +44,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
public bool Equals(TagHelperAttributeDescriptor descriptorX, TagHelperAttributeDescriptor descriptorY)
{
return descriptorX.AttributeName == descriptorY.AttributeName &&
- descriptorX.AttributePropertyName == descriptorY.AttributePropertyName;
+ descriptorX.AttributePropertyName == descriptorY.AttributePropertyName &&
+ descriptorX.AttributeTypeName == descriptorY.AttributeTypeName;
}
public int GetHashCode(TagHelperAttributeDescriptor descriptor)
@@ -52,6 +53,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
return HashCodeCombiner.Start()
.Add(descriptor.AttributeName)
.Add(descriptor.AttributePropertyName)
+ .Add(descriptor.AttributeTypeName)
.CombinedHash;
}
}