using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace GB5Shared.Hosting; public interface IModule { void Register(IServiceCollection services, IConfiguration configuration); void MapEndpoints(WebApplication app); /// /// Human-readable name used for Swagger tagging and host startup banners, discovered by /// — no host needs to maintain its own display-name list. /// Defaults to this module's own assembly name with a trailing "SL" stripped /// (e.g. assembly "CRMSL" -> "CRM"). Override only when that default reads poorly /// (e.g. assembly "WiSL" -> "WorkInstruction"). /// string DisplayName { get { var name = GetType().Assembly.GetName().Name ?? GetType().Name; return name.EndsWith("SL", StringComparison.Ordinal) ? name[..^2] : name; } } }