private static IServiceCollection Inject(ServiceAggregator injectionData, ServiceLifetime serviceLifetime)
 {
     foreach (MappedImplementation item in injectionData.mappedImplementations)
     {
         injectionData.services.Add(new ServiceDescriptor(item.abstraction, item.implementation, serviceLifetime));
     }
     return(injectionData.services);
 }
 /// <summary>
 /// Register mapped services as scoped
 /// </summary>
 /// <param name="injectionData">Mapped services</param>
 /// <returns></returns>
 public static IServiceCollection AsScoped(this ServiceAggregator injectionData)
 => Inject(injectionData, ServiceLifetime.Scoped);
 /// <summary>
 /// Register mapped services as singleton
 /// </summary>
 /// <param name="injectionData">Mapped services</param>
 /// <returns></returns>
 public static IServiceCollection AsSingleton(this ServiceAggregator injectionData)
 => Inject(injectionData, ServiceLifetime.Singleton);
 /// <summary>
 /// Register mapped services as transient
 /// </summary>
 /// <param name="injectionData">Mapped services</param>
 /// <returns></returns>
 public static IServiceCollection AsTransient(this ServiceAggregator injectionData)
 => Inject(injectionData, ServiceLifetime.Transient);