/// <summary> /// Registers a configuration instance which TOptions will bind against. /// </summary> /// <param name="services">The <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" /> to add the services to.</param> /// <returns>The <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" /> so that additional calls can be chained.</returns> /// <exception cref="ArgumentNullException">services /// or /// config</exception> public static IServiceCollection AddSynchroFeed(this IServiceCollection services) { return(services .AddSingleton(provider => provider.GetService <IOptions <ApplicationSettings> >()?.Value) .AddTransient <ActionObserverManager>() .Scan(scan => scan .FromAssemblies(AssemblyLoader.AssemblyLoaderFunc("*.dll")) .AddClasses(classes => classes.AssignableTo <IActionProcessor>()) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo <IRepositoryFactory>()) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo <IActionFactory>()) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo <ICommandFactory>()) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo <IActionObserverFactory>()) .AsImplementedInterfaces() .WithTransientLifetime() )); }