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";
|
||||
IViewComponentHelperTypeName = "Microsoft.AspNetCore.Mvc.IViewComponentHelper";
|
||||
IViewContextAwareTypeName = "Microsoft.AspNetCore.Mvc.ViewFeatures.IViewContextAware";
|
||||
ViewContextAttributeTypeName = "Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContextAttribute";
|
||||
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.
|
||||
/// </summary>
|
||||
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("[")
|
||||
.Write(typeof(HtmlAttributeNotBoundAttribute).FullName)
|
||||
.WriteParameterSeparator()
|
||||
.Write($"global::{_context.ViewContextTypeName}")
|
||||
.Write($"global::{_context.ViewContextAttributeTypeName}")
|
||||
.WriteLine("]");
|
||||
|
||||
Writer.WriteAutoPropertyDeclaration(
|
||||
|
|
|
|||
|
|
@ -165,7 +165,11 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
|
||||
services.TryAddSingleton<ITagHelperTypeResolver, TagHelperTypeResolver>();
|
||||
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.
|
||||
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.
|
||||
// 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.Reflection;
|
||||
using Microsoft.AspNetCore.Mvc.Razor.Host.Internal;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ public class __Generated__FooViewComponentTagHelper : Microsoft.AspNetCore.Razor
|
|||
{
|
||||
_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 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)
|
||||
|
|
@ -25,7 +25,7 @@ public class __Generated__BarViewComponentTagHelper : Microsoft.AspNetCore.Razor
|
|||
{
|
||||
_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 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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue