using FactoryPattern.Samples; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FactoryPattern.Factories; public static class DifferentImplementationsFactoryExtension { public static void AddVehicleFactory(this IServiceCollection services) { services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddSingleton>> (x => () => x.GetService>()!); services.AddSingleton(); } } public interface IVehicleFactory { IVehicle Create(string name); } public class VehicleFactory : IVehicleFactory { private readonly Func> _factory; public VehicleFactory(Func> factory) { _factory = factory; } public IVehicle Create(string name) { var set = _factory(); IVehicle output = set.Where(x => x.VehicleType == name).First(); return output; } }