diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/ApplicationPartFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/ApplicationPartFactory.cs index 6524ba6bae..71dc6a0b41 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/ApplicationPartFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/ApplicationPartFactory.cs @@ -19,27 +19,17 @@ namespace Microsoft.AspNetCore.Mvc.ApplicationParts /// public abstract class ApplicationPartFactory { - public static readonly string DefaultContextName = "Default"; - - /// - /// Default implementation for . - /// - public static ApplicationPartFactory Default { get; } = new DefaultApplicationPartFactory(); - /// /// Gets one or more instances for the specified . /// /// The . - /// - /// The context name. By default, value of this parameter is . - /// - public abstract IEnumerable GetApplicationParts(Assembly assembly, string context); + public abstract IEnumerable GetApplicationParts(Assembly assembly); /// /// Gets the for the specified assembly. /// /// An assembly may specify an using . - /// Otherwise, is used. + /// Otherwise, is used. /// /// /// The . @@ -54,7 +44,7 @@ namespace Microsoft.AspNetCore.Mvc.ApplicationParts var provideAttribute = assembly.GetCustomAttribute(); if (provideAttribute == null) { - return ApplicationPartFactory.Default; + return DefaultApplicationPartFactory.Instance; } var type = provideAttribute.GetFactoryType(); @@ -68,18 +58,5 @@ namespace Microsoft.AspNetCore.Mvc.ApplicationParts return (ApplicationPartFactory)Activator.CreateInstance(type); } - - private class DefaultApplicationPartFactory : ApplicationPartFactory - { - public override IEnumerable GetApplicationParts(Assembly assembly, string context) - { - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } - - yield return new AssemblyPart(assembly); - } - } } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/ApplicationPartManager.cs b/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/ApplicationPartManager.cs index 3de5a48338..1636c61df7 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/ApplicationPartManager.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/ApplicationPartManager.cs @@ -59,7 +59,7 @@ namespace Microsoft.AspNetCore.Mvc.ApplicationParts foreach (var assembly in applicationAssemblies) { var partFactory = ApplicationPartFactory.GetApplicationPartFactory(assembly); - foreach (var part in partFactory.GetApplicationParts(assembly, context: ApplicationPartFactory.DefaultContextName)) + foreach (var part in partFactory.GetApplicationParts(assembly)) { ApplicationParts.Add(part); } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/DefaultApplicationPartFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/DefaultApplicationPartFactory.cs new file mode 100644 index 0000000000..60a08f7974 --- /dev/null +++ b/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/DefaultApplicationPartFactory.cs @@ -0,0 +1,44 @@ +// 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; + +namespace Microsoft.AspNetCore.Mvc.ApplicationParts +{ + /// + /// Default . + /// + public class DefaultApplicationPartFactory : ApplicationPartFactory + { + /// + /// Gets an instance of . + /// + public static DefaultApplicationPartFactory Instance { get; } = new DefaultApplicationPartFactory(); + + /// + /// Gets the sequence of instances that are created by this instance of . + /// + /// Applications may use this method to get the same behavior as this factory produces during MVC's default part discovery. + /// + /// + /// The . + /// The sequence of instances. + public static IEnumerable GetDefaultApplicationParts(Assembly assembly) + { + if (assembly == null) + { + throw new ArgumentNullException(nameof(assembly)); + } + + yield return new AssemblyPart(assembly); + } + + /// + public override IEnumerable GetApplicationParts(Assembly assembly) + { + return GetDefaultApplicationParts(assembly); + } + } +} diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/NullApplicationPartFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/NullApplicationPartFactory.cs index 06e48018e5..6fe7ff39ff 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/NullApplicationPartFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ApplicationParts/NullApplicationPartFactory.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Mvc.ApplicationParts public class NullApplicationPartFactory : ApplicationPartFactory { /// - public override IEnumerable GetApplicationParts(Assembly assembly, string context) + public override IEnumerable GetApplicationParts(Assembly assembly) { return Enumerable.Empty(); } diff --git a/src/Microsoft.AspNetCore.Mvc.Razor/ApplicationParts/CompiledRazorAssemblyApplicationPartFactory.cs b/src/Microsoft.AspNetCore.Mvc.Razor/ApplicationParts/CompiledRazorAssemblyApplicationPartFactory.cs index d4b4243592..daee08d222 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor/ApplicationParts/CompiledRazorAssemblyApplicationPartFactory.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor/ApplicationParts/CompiledRazorAssemblyApplicationPartFactory.cs @@ -12,8 +12,15 @@ namespace Microsoft.AspNetCore.Mvc.ApplicationParts /// public class CompiledRazorAssemblyApplicationPartFactory : ApplicationPartFactory { - /// - public override IEnumerable GetApplicationParts(Assembly assembly, string configuration) + /// + /// Gets the sequence of instances that are created by this instance of . + /// + /// Applications may use this method to get the same behavior as this factory produces during MVC's default part discovery. + /// + /// + /// The . + /// The sequence of instances. + public static IEnumerable GetDefaultApplicationParts(Assembly assembly) { if (assembly == null) { @@ -22,5 +29,8 @@ namespace Microsoft.AspNetCore.Mvc.ApplicationParts yield return new CompiledRazorAssemblyPart(assembly); } + + /// + public override IEnumerable GetApplicationParts(Assembly assembly) => GetDefaultApplicationParts(assembly); } }