// 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.AspNet.Mvc.ApplicationModels; using Microsoft.Framework.Internal; namespace Microsoft.AspNet.Mvc { /// /// Contains the extension methods for . /// public static class ApplicationModelConventionExtensions { /// /// Adds a to all the controllers in the application. /// /// The list of /// in . /// The which needs to be /// added. public static void Add( [NotNull] this IList conventions, [NotNull] IControllerModelConvention controllerModelConvention) { conventions.Add(new ControllerApplicationModelConvention(controllerModelConvention)); } /// /// Adds a to all the actions in the application. /// /// The list of /// in . /// The which needs to be /// added. public static void Add( this IList conventions, IActionModelConvention actionModelConvention) { conventions.Add(new ActionApplicationModelConvention(actionModelConvention)); } private class ActionApplicationModelConvention : IApplicationModelConvention { private IActionModelConvention _actionModelConvention; /// /// Initializes a new instance of . /// /// The action convention to be applied on all actions /// in the application. public ActionApplicationModelConvention([NotNull] IActionModelConvention actionModelConvention) { _actionModelConvention = actionModelConvention; } /// public void Apply([NotNull] ApplicationModel application) { foreach (var controller in application.Controllers) { foreach (var action in controller.Actions) { _actionModelConvention.Apply(action); } } } } private class ControllerApplicationModelConvention : IApplicationModelConvention { private IControllerModelConvention _controllerModelConvention; /// /// Initializes a new instance of . /// /// The controller convention to be applied on all controllers /// in the application. public ControllerApplicationModelConvention([NotNull] IControllerModelConvention controllerConvention) { _controllerModelConvention = controllerConvention; } /// public void Apply([NotNull] ApplicationModel application) { foreach (var controller in application.Controllers) { _controllerModelConvention.Apply(controller); } } } } }