예제 #1
0
        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>();
        }
예제 #2
0
 public ShapeBuilder(IServiceProvider serviceProvider, ShapeFactoryRegistry registry)
 {
     _serviceProvider = serviceProvider;
     _registry        = registry;
 }