Added ViewComponentTagHelperDescriptorResolver and related stuff
This commit is contained in:
parent
760c8f3867
commit
0cfd5363f8
|
|
@ -17,6 +17,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host.Internal
|
||||||
InvokeAsyncMethodName = "InvokeAsync";
|
InvokeAsyncMethodName = "InvokeAsync";
|
||||||
IViewComponentHelperTypeName = "Microsoft.AspNetCore.Mvc.IViewComponentHelper";
|
IViewComponentHelperTypeName = "Microsoft.AspNetCore.Mvc.IViewComponentHelper";
|
||||||
IViewContextAwareTypeName = "Microsoft.AspNetCore.Mvc.ViewFeatures.IViewContextAware";
|
IViewContextAwareTypeName = "Microsoft.AspNetCore.Mvc.ViewFeatures.IViewContextAware";
|
||||||
|
ViewContextAttributeTypeName = "Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContextAttribute";
|
||||||
ViewContextTypeName = "Microsoft.AspNetCore.Mvc.Rendering.ViewContext";
|
ViewContextTypeName = "Microsoft.AspNetCore.Mvc.Rendering.ViewContext";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -44,5 +45,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host.Internal
|
||||||
/// Name of the ViewContext type for view execution.
|
/// Name of the ViewContext type for view execution.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ViewContextTypeName { get; set; }
|
public string ViewContextTypeName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Name of the ViewContextAttribute type for view execution.
|
||||||
|
/// </summary>
|
||||||
|
public string ViewContextAttributeTypeName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -119,7 +119,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host.Internal
|
||||||
Writer.Write("[")
|
Writer.Write("[")
|
||||||
.Write(typeof(HtmlAttributeNotBoundAttribute).FullName)
|
.Write(typeof(HtmlAttributeNotBoundAttribute).FullName)
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator()
|
||||||
.Write($"global::{_context.ViewContextTypeName}")
|
.Write($"global::{_context.ViewContextAttributeTypeName}")
|
||||||
.WriteLine("]");
|
.WriteLine("]");
|
||||||
|
|
||||||
Writer.WriteAutoPropertyDeclaration(
|
Writer.WriteAutoPropertyDeclaration(
|
||||||
|
|
|
||||||
|
|
@ -165,7 +165,11 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||||
|
|
||||||
services.TryAddSingleton<ITagHelperTypeResolver, TagHelperTypeResolver>();
|
services.TryAddSingleton<ITagHelperTypeResolver, TagHelperTypeResolver>();
|
||||||
services.TryAddSingleton<ITagHelperDescriptorFactory>(s => new TagHelperDescriptorFactory(designTime: false));
|
services.TryAddSingleton<ITagHelperDescriptorFactory>(s => new TagHelperDescriptorFactory(designTime: false));
|
||||||
services.TryAddSingleton<ITagHelperDescriptorResolver, TagHelperDescriptorResolver>();
|
services.TryAddSingleton<TagHelperDescriptorResolver, TagHelperDescriptorResolver>();
|
||||||
|
|
||||||
|
// And ViewComponentTagHelper resolver.
|
||||||
|
services.TryAddSingleton<ViewComponentTagHelperDescriptorResolver, ViewComponentTagHelperDescriptorResolver>();
|
||||||
|
services.TryAddSingleton<ITagHelperDescriptorResolver, CompositeTagHelperDescriptorResolver>();
|
||||||
|
|
||||||
// Caches compilation artifacts across the lifetime of the application.
|
// Caches compilation artifacts across the lifetime of the application.
|
||||||
services.TryAddSingleton<ICompilerCacheProvider, DefaultCompilerCacheProvider>();
|
services.TryAddSingleton<ICompilerCacheProvider, DefaultCompilerCacheProvider>();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.AspNetCore.Razor.Compilation.TagHelpers;
|
||||||
|
using Microsoft.AspNetCore.Razor.Runtime.TagHelpers;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
|
{
|
||||||
|
public class CompositeTagHelperDescriptorResolver : ITagHelperDescriptorResolver
|
||||||
|
{
|
||||||
|
public IList<TagHelperDescriptorResolver> _resolvers;
|
||||||
|
|
||||||
|
public CompositeTagHelperDescriptorResolver(
|
||||||
|
TagHelperDescriptorResolver tagHelperDescriptorResolver,
|
||||||
|
ViewComponentTagHelperDescriptorResolver viewComponentTagHelperDescriptorResolver)
|
||||||
|
{
|
||||||
|
_resolvers = new List<TagHelperDescriptorResolver>();
|
||||||
|
_resolvers.Add(tagHelperDescriptorResolver);
|
||||||
|
_resolvers.Add(viewComponentTagHelperDescriptorResolver);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<TagHelperDescriptor> Resolve(TagHelperDescriptorResolutionContext resolutionContext)
|
||||||
|
{
|
||||||
|
var descriptors = new List<TagHelperDescriptor>();
|
||||||
|
|
||||||
|
foreach (var resolver in _resolvers)
|
||||||
|
{
|
||||||
|
var currentDescriptors = resolver.Resolve(resolutionContext);
|
||||||
|
descriptors.AddRange(currentDescriptors);
|
||||||
|
}
|
||||||
|
|
||||||
|
return descriptors;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ViewComponents;
|
||||||
|
using Microsoft.AspNetCore.Razor;
|
||||||
|
using Microsoft.AspNetCore.Razor.Compilation.TagHelpers;
|
||||||
|
using Microsoft.AspNetCore.Razor.Runtime.TagHelpers;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
|
{
|
||||||
|
public class ViewComponentTagHelperDescriptorResolver : TagHelperDescriptorResolver
|
||||||
|
{
|
||||||
|
ViewComponentTagHelperDescriptorFactory _descriptorFactory;
|
||||||
|
|
||||||
|
public ViewComponentTagHelperDescriptorResolver(
|
||||||
|
IViewComponentDescriptorProvider viewComponentDescriptorProvider)
|
||||||
|
: base(designTime: true)
|
||||||
|
{
|
||||||
|
_descriptorFactory = new ViewComponentTagHelperDescriptorFactory(viewComponentDescriptorProvider);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override IEnumerable<TagHelperDescriptor> ResolveDescriptorsInAssembly(
|
||||||
|
string assemblyName,
|
||||||
|
SourceLocation documentLocation,
|
||||||
|
ErrorSink errorSink)
|
||||||
|
{
|
||||||
|
return _descriptorFactory.CreateDescriptors(assemblyName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Microsoft.AspNetCore.Mvc.Razor.Host.Internal;
|
using Microsoft.AspNetCore.Mvc.Razor.Host.Internal;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ public class __Generated__FooViewComponentTagHelper : Microsoft.AspNetCore.Razor
|
||||||
{
|
{
|
||||||
_viewComponentHelper = viewComponentHelper;
|
_viewComponentHelper = viewComponentHelper;
|
||||||
}
|
}
|
||||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBoundAttribute, global::Microsoft.AspNetCore.Mvc.Rendering.ViewContext]
|
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBoundAttribute, global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContextAttribute]
|
||||||
public global::Microsoft.AspNetCore.Mvc.Rendering.ViewContext ViewContext { get; set; }
|
public global::Microsoft.AspNetCore.Mvc.Rendering.ViewContext ViewContext { get; set; }
|
||||||
public System.String Attribute { get; set; }
|
public System.String Attribute { get; set; }
|
||||||
public override async global::System.Threading.Tasks.Task ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
public override async global::System.Threading.Tasks.Task ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||||
|
|
@ -25,7 +25,7 @@ public class __Generated__BarViewComponentTagHelper : Microsoft.AspNetCore.Razor
|
||||||
{
|
{
|
||||||
_viewComponentHelper = viewComponentHelper;
|
_viewComponentHelper = viewComponentHelper;
|
||||||
}
|
}
|
||||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBoundAttribute, global::Microsoft.AspNetCore.Mvc.Rendering.ViewContext]
|
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBoundAttribute, global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContextAttribute]
|
||||||
public global::Microsoft.AspNetCore.Mvc.Rendering.ViewContext ViewContext { get; set; }
|
public global::Microsoft.AspNetCore.Mvc.Rendering.ViewContext ViewContext { get; set; }
|
||||||
public System.String Attribute { get; set; }
|
public System.String Attribute { get; set; }
|
||||||
public override async global::System.Threading.Tasks.Task ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
public override async global::System.Threading.Tasks.Task ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue