using System; using System.Reflection; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Controllers; namespace StardewModdingAPI.Web.Framework { /// Discovers controllers with support for non-public controllers. internal class InternalControllerFeatureProvider : ControllerFeatureProvider { /********* ** Public methods *********/ /// Determines if a given type is a controller. /// The candidate. /// true if the type is a controller; otherwise false. protected override bool IsController(TypeInfo type) { return type.IsClass && !type.IsAbstract && (/*type.IsPublic &&*/ !type.ContainsGenericParameters) && (!type.IsDefined(typeof(NonControllerAttribute)) && (type.Name.EndsWith("Controller", StringComparison.OrdinalIgnoreCase) || type.IsDefined(typeof(ControllerAttribute)))); } } }