正在创建Ninject单例的多个实例

时间:2019-02-22 18:40:37

标签: c# dependency-injection ninject

我在应该是单例作用域的情况下使用Ninject进行构造函数注入,但是我的日志非常清楚地显示了多个线程同时具有自己的注入对象实例。

插入绑定


List<Assembly> assemblies = new List<Assembly> {
    typeof(DbContext).Assembly, // DataAccess
    typeof(ILogger).Assembly, // Infrastructure
    typeof(NullHelpers).Assembly, // Library
    typeof(Repository<>).Assembly, // Repository
    typeof(Logger).Assembly, // Service
    typeof(NinjectRegistrator).Assembly, // This project
    GuiAssembly, // The GUI project
};

kernel.Bind(x => x
    .From(assemblies)
    .Select(type => type.IsClass && !type.IsAbstract)
    .BindDefaultInterface()
    .Configure(b => b.InSingletonScope())
);

如您所见,我在很大程度上依赖Ninject及其默认绑定:ISearchRepository自动映射到SearchRepository,等等。

注入类

public class SearchRepository : ISearchRepository
{
    private readonly ISettingRepository _settingRepository;
    public SearchRepository(ISettingRepository settingRepo)
    {
        Console.WriteLine("new class created");
        _settingRepository = settingRepo;
    }
}

我在日志记录中看到的是“新类创建”正在非常紧密地输出多次。这是一个商业级应用程序,一次有多个线程在使用此存储库。在大多数情况下,它运行良好,但是当该对象在1-2分钟内被多次处置和构造多次时,会产生波浪状的冲击。

0 个答案:

没有答案