#7024 Request: ServiceBasedPageModelActivatorProvider [Review Changes]
This commit is contained in:
parent
b8e5036e20
commit
077b1d87a9
|
|
@ -110,11 +110,9 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||||
ServiceDescriptor.Singleton<IActionInvokerProvider, PageActionInvokerProvider>());
|
ServiceDescriptor.Singleton<IActionInvokerProvider, PageActionInvokerProvider>());
|
||||||
|
|
||||||
// Page and Page model creation and activation
|
// Page and Page model creation and activation
|
||||||
services.TryAddSingleton<IPageModelActivatorProvider, DefaultPageModelActivatorProvider>();
|
services.TryAddSingleton<IPageModelActivatorProvider, DefaultPageModelActivatorProvider>();
|
||||||
services.TryAddSingleton<IPageModelFactoryProvider, DefaultPageModelFactoryProvider>();
|
services.TryAddSingleton<IPageModelFactoryProvider, DefaultPageModelFactoryProvider>();
|
||||||
|
|
||||||
services.TryAddSingleton<IPageModelActivatorProvider, ServiceBasedPageModelActivatorProvider>();
|
|
||||||
|
|
||||||
services.TryAddSingleton<IPageActivatorProvider, DefaultPageActivatorProvider>();
|
services.TryAddSingleton<IPageActivatorProvider, DefaultPageActivatorProvider>();
|
||||||
services.TryAddSingleton<IPageFactoryProvider, DefaultPageFactoryProvider>();
|
services.TryAddSingleton<IPageFactoryProvider, DefaultPageFactoryProvider>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
|
||||||
throw new ArgumentNullException(nameof(descriptor));
|
throw new ArgumentNullException(nameof(descriptor));
|
||||||
}
|
}
|
||||||
|
|
||||||
var modelTypeInfo = descriptor.ModelTypeInfo?.AsType();
|
var modelType = descriptor.ModelTypeInfo?.AsType();
|
||||||
if (modelTypeInfo == null)
|
if (modelType == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentException(Resources.FormatPropertyOfTypeCannotBeNull(
|
throw new ArgumentException(Resources.FormatPropertyOfTypeCannotBeNull(
|
||||||
nameof(descriptor.ModelTypeInfo),
|
nameof(descriptor.ModelTypeInfo),
|
||||||
|
|
@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
|
||||||
|
|
||||||
return context =>
|
return context =>
|
||||||
{
|
{
|
||||||
return context.HttpContext.RequestServices.GetRequiredService(modelTypeInfo);
|
return context.HttpContext.RequestServices.GetRequiredService(modelType);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,10 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var simpleModel = new DISimpleModel();
|
var simpleModel = new DISimpleModel();
|
||||||
var serviceProvider = new Mock<IServiceProvider>(MockBehavior.Strict);
|
var serviceProvider = new Mock<IServiceProvider>(MockBehavior.Strict);
|
||||||
serviceProvider.Setup(s => s.GetService(typeof(DISimpleModel)))
|
serviceProvider.Setup(s => s.GetService(typeof(DISimpleModel)))
|
||||||
.Returns(simpleModel)
|
.Returns(simpleModel)
|
||||||
.Verifiable();
|
.Verifiable();
|
||||||
|
|
||||||
var activatorProvider = new ServiceBasedPageModelActivatorProvider();
|
var activatorProvider = new ServiceBasedPageModelActivatorProvider();
|
||||||
var pageContext = new PageContext
|
var pageContext = new PageContext
|
||||||
|
|
@ -62,11 +62,11 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
|
||||||
public void CreateActivator_CreatesModelInstance()
|
public void CreateActivator_CreatesModelInstance()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var controller = new DISimpleModel();
|
var simpleModel = new DISimpleModel();
|
||||||
var serviceProvider = new Mock<IServiceProvider>(MockBehavior.Strict);
|
var serviceProvider = new Mock<IServiceProvider>(MockBehavior.Strict);
|
||||||
serviceProvider.Setup(s => s.GetService(typeof(DISimpleModel)))
|
serviceProvider.Setup(s => s.GetService(typeof(DISimpleModel)))
|
||||||
.Returns(controller)
|
.Returns(simpleModel)
|
||||||
.Verifiable();
|
.Verifiable();
|
||||||
|
|
||||||
var activatorProvider = new ServiceBasedPageModelActivatorProvider();
|
var activatorProvider = new ServiceBasedPageModelActivatorProvider();
|
||||||
var pageContext = new PageContext
|
var pageContext = new PageContext
|
||||||
|
|
@ -86,8 +86,8 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
|
||||||
var model = activator(pageContext);
|
var model = activator(pageContext);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
var simpleModel = Assert.IsType<DISimpleModel>(model);
|
var simpleModel2 = Assert.IsType<DISimpleModel>(model);
|
||||||
Assert.NotNull(simpleModel);
|
Assert.NotNull(simpleModel2);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue