public static void AddShapeBuilder(this IServiceCollection services, Action <ShapeFactoryRegistry> action = null) { var factoryRegistry = new ShapeFactoryRegistry(); factoryRegistry.Register <CircleShapeFactory>(); factoryRegistry.Register <TriangleShapeFactory>(); action?.Invoke(factoryRegistry); foreach (var registeredHandler in factoryRegistry.RegisteredFactories) { services.AddScoped(registeredHandler); } services.AddSingleton(factoryRegistry); services.AddScoped <IShapeBuilder, ShapeBuilder>(); }
public ShapeBuilder(IServiceProvider serviceProvider, ShapeFactoryRegistry registry) { _serviceProvider = serviceProvider; _registry = registry; }