/// <summary> /// Creates and activates a <see cref="ITagHelper"/>. /// </summary> /// <typeparam name="TTagHelper">A <see cref="ITagHelper"/> type.</typeparam> /// <returns>The activated <see cref="ITagHelper"/>.</returns> /// <remarks> /// <typeparamref name="TTagHelper"/> must have a parameterless constructor. /// </remarks> public TTagHelper CreateTagHelper <TTagHelper>() where TTagHelper : ITagHelper { var tagHelper = TypeActivatorCache.CreateInstance <TTagHelper>( ViewContext.HttpContext.RequestServices, typeof(TTagHelper)); TagHelperActivator.Activate(tagHelper, ViewContext); return(tagHelper); }
/// <summary> /// Resolves a type using the type activator cache, just as ASP.NET Core does /// </summary> /// <typeparam name="T">The type to resolve</typeparam> /// <returns>The resolved type, or null if cannot be resolved</returns> protected T ResolveType <T>(ServiceProvider serviceProvider) { TypeActivatorCache typeActivatorCache = new TypeActivatorCache(); return(typeActivatorCache.CreateInstance <T>(serviceProvider, typeof(T))); }