Skip to content
This repository has been archived by the owner on Feb 23, 2021. It is now read-only.

Commit

Permalink
Addressed more feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
ajaybhargavb committed Sep 23, 2016
1 parent e0d8960 commit c618ddf
Showing 1 changed file with 11 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@ namespace Microsoft.AspNetCore.Razor.Design.Internal
{
public class AssemblyTagHelperDescriptorResolver
{
private const string TypeFullName = "Microsoft.AspNetCore.Mvc.DesignTimeMvcServiceCollectionProvider";
private const string MvcAssemblyName = "Microsoft.AspNetCore.Mvc";
private const string MethodName = "PopulateServiceCollection";

private readonly TagHelperDescriptorFactory _tagHelperDescriptorFactory;
private readonly TagHelperTypeResolver _tagHelperTypeResolver;

private bool _loadedAssembly;
private bool _isInitialized;
private bool _hasMvcAssembly;
private object _serviceCollectionProviderClassInstance;
private MethodInfo _populateMethod;
Expand Down Expand Up @@ -54,9 +58,9 @@ public IEnumerable<TagHelperDescriptor> Resolve(string assemblyName, ErrorSink e
typeof(TagHelperDescriptor).FullName, ProtocolVersion));
}

if (!_loadedAssembly)
if (!_isInitialized)
{
LoadMvcAssembly();
EnsureMvcInitialized();
}

ITagHelperDescriptorResolver resolver;
Expand Down Expand Up @@ -101,25 +105,21 @@ protected virtual IEnumerable<Type> GetTagHelperTypes(string assemblyName, Error
return _tagHelperTypeResolver.Resolve(assemblyName, SourceLocation.Zero, errorSink);
}

private void LoadMvcAssembly()
private void EnsureMvcInitialized()
{
const string typeFullName = "Microsoft.AspNetCore.Mvc.DesignTimeMvcServiceCollectionProvider";
const string assemblyName = "Microsoft.AspNetCore.Mvc";
const string methodName = "PopulateServiceCollection";

_loadedAssembly = true;
_isInitialized = true;

try
{
var providerClass = Type.GetType($"{typeFullName}, {assemblyName}", throwOnError: true);
var providerClass = Type.GetType($"{TypeFullName}, {MvcAssemblyName}", throwOnError: true);

_serviceCollectionProviderClassInstance = Activator.CreateInstance(providerClass);

// Get the method from the type
_populateMethod = providerClass.GetMethods(BindingFlags.Public | BindingFlags.Static)
.FirstOrDefault(methodInfo =>
{
if (string.Equals(methodName, methodInfo.Name, StringComparison.Ordinal)
if (string.Equals(MethodName, methodInfo.Name, StringComparison.Ordinal)
&& methodInfo.ReturnParameter.ParameterType.Equals(typeof(void)))
{
var methodParams = methodInfo.GetParameters();
Expand Down

0 comments on commit c618ddf

Please sign in to comment.