using Microsoft.Extensions.DependencyInjection; using System.Reflection; namespace SeaHaven.DataServices.DependencyInjection { public static class DataServicesModule { private static readonly List ExcludedTypes = new(); public static IServiceCollection AddDataServices(this IServiceCollection services) { var assembly = Assembly.GetExecutingAssembly(); var allClasses = assembly.GetTypes() .Where(t => t.IsClass && !t.IsAbstract && !t.IsGenericType && !ExcludedTypes.Contains(t)) .ToList(); foreach (var implementationType in allClasses) { var defaultInterface = implementationType.GetInterfaces() .FirstOrDefault(i => i.Name == $"I{implementationType.Name}"); if (defaultInterface != null) { services.AddScoped(defaultInterface, implementationType); } } return services; } } }