Add project files.

This commit is contained in:
2025-07-06 17:26:05 +02:00
parent 8edf3708d8
commit 0f7207523a
42 changed files with 1657 additions and 0 deletions

View File

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FactoryPattern.Factories;
//builder.Services.AddTransient<ISample1, Sample1>();
//builder.Services.AddSingleton<Func<ISample1>>(x => () => x.GetService<ISample1>());
public static class AbstractFactoryExtension
{
public static void AddAbstractFactory<TInterface, TImplementation>(this IServiceCollection services)
where TInterface : class
where TImplementation : class, TInterface
{
services.AddTransient<TInterface, TImplementation>();
services.AddSingleton<Func<TInterface>>(x => () => x.GetService<TInterface>()!);
services.AddSingleton<IAbstractFactory<TInterface>, AbstractFactory<TInterface>>();
}
}
public class AbstractFactory<T> : IAbstractFactory<T>
{
private readonly Func<T> _factory;
public AbstractFactory(Func<T> factory)
{
_factory = factory;
}
public T Create()
{
return _factory();
}
}
public interface IAbstractFactory<T>
{
T Create();
}