相关疑难解决方法(0)

为什么会在内置的ASP.NET Core DI Container上使用第三方DI Container?

目前缺乏关于DI主题的文档 - 依赖注入.有人可以帮我理解以下内容:

  1. 这些注册有什么区别?

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IService, Service>();
        services.AddScoped<IService, Service>();
        services.AddSingleton<IService, Service>();
        services.AddInstance(service);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用内置DI优于现有解决方案(NInject,Autofac,Structure Map)的优缺点是什么?
  3. 默认依赖注入的当前限制是什么(如果有的话)?

asp.net dependency-injection asp.net-core

40
推荐指数
4
解决办法
1万
查看次数

asp.net核心,Ef核心:在运行时动态映射存储库和服务

我一直在将我的存储库类映射到它的接口,同样也用于服务.在这里我可以手动注册它们.但我希望我的代码在运行时动态映射这些代码,这样我就不必在每次创建新的存储库或服务时手动注册它们.我怎样才能做到这一点?

这是我的代码:

public void RegisterDependencies(IServiceCollection services, IConectionSetting connectionSetting)
{
    services.AddDbContext<QuantumDbContext>(options => options.UseSqlServer(connectionSetting.Get()));
    //services.AddDbContext<TestDbContext>(options => options.UseSqlServer(databaseFactory.ConnectionString));
    services.AddTransient<IDatabaseFactory, DatabaseFactory>();
    services.AddTransient<IDbContext, TestDbContext>();
    services.AddTransient<IDbContext, QuantumDbContext>();
    services.AddTransient<IUnitOfWorkManager, UnitOfWorkManager>();
    services.AddTransient<IRepository<CodeTable>, Repository<CodeTable>>();
    services.AddTransient<IRepository<Country>, Repository<Country>>();
    services.AddTransient<IRepository<State>, Repository<State>>();
    services.AddTransient<IRepository<City>, Repository<City>>();

    services.AddTransient<ICodeTableService, CodeTableService>();
    services.AddTransient<ICountryService, CountryService>();
}
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection entity-framework-core asp.net-core-mvc asp.net-core

5
推荐指数
1
解决办法
1084
查看次数