diff --git a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperDescriptorResolver.cs b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperDescriptorResolver.cs
index fd9cff000b..420194f732 100644
--- a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperDescriptorResolver.cs
+++ b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperDescriptorResolver.cs
@@ -45,34 +45,44 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
nameof(lookupText));
}
- var tagHelperTypes = ResolveTagHelperTypes(lookupStrings);
+ // Grab the assembly name from the lookup text strings. Due to our supported lookupText formats it will
+ // always be the last element provided.
+ var assemblyName = lookupStrings.Last().Trim();
+
+ // Retrieve all TagHelperDescriptors that exist within the given assemblyName.
+ var descriptors = ResolveDescriptorsInAssembly(assemblyName);
+
+ // Check if the lookupText specifies a type to search for.
+ if (lookupStrings.Length == 2)
+ {
+ // The user provided a type name retrieve it so we can prune our descriptors.
+ var typeName = lookupStrings[0].Trim();
+
+ descriptors = descriptors.Where(descriptor =>
+ string.Equals(descriptor.TagHelperName, typeName, StringComparison.Ordinal));
+ }
+
+ return descriptors;
+ }
+
+ ///
+ /// Resolves all s for s from the given
+ /// .
+ ///
+ ///
+ /// The name of the assembly to resolve s from.
+ ///
+ /// s that represent s from the given
+ /// .
+ protected virtual IEnumerable ResolveDescriptorsInAssembly(string assemblyName)
+ {
+ // Resolve valid tag helper types from the assembly.
+ var tagHelperTypes = _typeResolver.Resolve(assemblyName);
// Convert types to TagHelperDescriptors
var descriptors = tagHelperTypes.SelectMany(TagHelperDescriptorFactory.CreateDescriptors);
return descriptors;
}
-
- private IEnumerable ResolveTagHelperTypes(string[] lookupStrings)
- {
- // Grab the assembly name from the lookup text strings. Due to our supported lookupText formats it will
- // always be the last element provided.
- var assemblyName = lookupStrings.Last().Trim();
-
- // Resolve valid tag helper types from the assembly.
- var types = _typeResolver.Resolve(assemblyName);
-
- // Check if the lookupText specifies a type to search for.
- if (lookupStrings.Length == 2)
- {
- // The user provided a type name retrieve the value and trim it.
- var typeName = lookupStrings[0].Trim();
-
- types = types.Where(type =>
- string.Equals(type.Namespace + "." + type.Name, typeName, StringComparison.Ordinal));
- }
-
- return types;
- }
}
}
\ No newline at end of file