namespace TheXamlGuy.Framework.Core; public class ServiceFactory : IServiceFactory { private readonly Func factory; private readonly Func creator; public ServiceFactory(Func factory, Func creator) { this.factory = factory; this.creator = creator; } public T? Get(Type type) { T? value = (T?)factory(type); return value; } public T Create(Type type, params object?[] parameters) { dynamic? lookup = factory(typeof(IServiceCreator<>).MakeGenericType(type)); return lookup is not null ? (T)lookup.Create(creator, parameters) : (T)creator(type, parameters); } }