Expose GetExportedTypes on TagHelperTypeResolver.

- This will enable tooling to provide their own mechanism for resolving assemblies.
This commit is contained in:
N. Taylor Mullen 2014-12-08 15:16:00 -08:00
parent 6d2fb23f7d
commit c680833350
3 changed files with 15 additions and 9 deletions

View File

@ -53,7 +53,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
IEnumerable<TypeInfo> libraryTypes; IEnumerable<TypeInfo> libraryTypes;
try try
{ {
libraryTypes = GetLibraryDefinedTypes(assemblyName); libraryTypes = GetExportedTypes(assemblyName);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -72,8 +72,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
return validTagHelpers.Select(type => type.AsType()); return validTagHelpers.Select(type => type.AsType());
} }
// Internal for testing, don't want to be loading assemblies during a test. /// <summary>
internal virtual IEnumerable<TypeInfo> GetLibraryDefinedTypes(AssemblyName assemblyName) /// Returns all exported types from the given <paramref name="assemblyName"/>
/// </summary>
/// <param name="assemblyName">The <see cref="AssemblyName"/> to get <see cref="TypeInfo"/>s from.</param>
/// <returns>
/// An <see cref="IEnumerable{TypeInfo}"/> of types exported from the given <paramref name="assemblyName"/>.
/// </returns>
protected virtual IEnumerable<TypeInfo> GetExportedTypes(AssemblyName assemblyName)
{ {
var assembly = Assembly.Load(assemblyName); var assembly = Assembly.Load(assemblyName);

View File

@ -358,7 +358,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
// Arrange // Arrange
var tagHelperTypeResolver = new TestTagHelperTypeResolver(TestableTagHelpers) var tagHelperTypeResolver = new TestTagHelperTypeResolver(TestableTagHelpers)
{ {
OnGetLibraryDefinedTypes = (assemblyName) => OnGetExportedTypes = (assemblyName) =>
{ {
Assert.Equal("MyAssembly", assemblyName.Name); Assert.Equal("MyAssembly", assemblyName.Name);
} }
@ -523,7 +523,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
_lookupValues = lookupValues; _lookupValues = lookupValues;
} }
internal override IEnumerable<TypeInfo> GetLibraryDefinedTypes(AssemblyName assemblyName) protected override IEnumerable<TypeInfo> GetExportedTypes(AssemblyName assemblyName)
{ {
IEnumerable<Type> types; IEnumerable<Type> types;

View File

@ -114,14 +114,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
public TestTagHelperTypeResolver(IEnumerable<Type> assemblyTypes) public TestTagHelperTypeResolver(IEnumerable<Type> assemblyTypes)
{ {
_assemblyTypeInfos = assemblyTypes.Select(type => type.GetTypeInfo()); _assemblyTypeInfos = assemblyTypes.Select(type => type.GetTypeInfo());
OnGetLibraryDefinedTypes = (_) => { }; OnGetExportedTypes = (_) => { };
} }
public Action<AssemblyName> OnGetLibraryDefinedTypes { get; set; } public Action<AssemblyName> OnGetExportedTypes { get; set; }
internal override IEnumerable<TypeInfo> GetLibraryDefinedTypes(AssemblyName assemblyName) protected override IEnumerable<TypeInfo> GetExportedTypes(AssemblyName assemblyName)
{ {
OnGetLibraryDefinedTypes(assemblyName); OnGetExportedTypes(assemblyName);
return _assemblyTypeInfos; return _assemblyTypeInfos;
} }