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 GenerateClassWithDataFactoryExtension { public static void AddGenericClassWithDataFactory(this IServiceCollection services) { services.AddTransient(); services.AddSingleton>(x => () => x.GetService()!); services.AddSingleton(); } } public interface IUserDataFactory { IUserData Create(string name); } public class UserDataFactory : IUserDataFactory { private readonly Func _factory; public UserDataFactory(Func factory) { _factory = factory; } public IUserData Create(string name) { var output = _factory(); output.Name = name; return output; } }