Home > Net >  Class library has no Program.cs - where to configure DI?
Class library has no Program.cs - where to configure DI?

Time:04-12

I started a new class library project and I want to use Dependency Injection for services and DbContext, etc.

However there is no Program.cs file.

Where should I configure the DI interfaces and classes? Do I need to add an empty Program.cs?

CodePudding user response:

for example, if you have a class library as a business access layer. you can add a class in the root with the name DependencyInjection as the following

public static class DependencyInjection
    {
        public static void AddApplication(this IServiceCollection service)
        {
            service.AddScoped<IOrgSettingsService, OrgSettingsService>();
            service.AddScoped<IIdentity, IdentityService>();
            service.AddScoped<ILdapAuthenticationService, LdapAuthenticationService>();
            service.AddScoped<IOrgAuthenticationService, OrgAuthenticationService>();
            service.AddScoped<IVacanciesService, VacancyService>();
            
            // assemblers
            service.AddScoped<IVacancyAssembler, VacancyAssembler>();

        }
    }

and register it in startup class as the following

 public void ConfigureServices(IServiceCollection services)
        {
         // ...
          services.AddApplication();
        }

CodePudding user response:

dependency injection used for whole application.Main application injects services to all assemblies. for example, dbcontext inject from main application to your assembly.You should not define dependency instance for each assembly separately and locally

  • Related