Azure Web 角色中后台线程的结构图构造函数注入

本文关键字:结构图 构造函数 注入 线程 后台 Web 角色 Azure | 更新日期: 2023-09-27 18:31:20

我有一个后台线程在Windows Azure Web角色中定期运行:

enquiries = new Enquiry();
Thread enqThread = new Thread(enquiries.Start);
enqThread.Start();

查询使用实体框架 5.0 DbContext 从数据库中提取查询记录。我想使用 Structuremap 在其构造函数中注入 DbContext。我正在这样做,

public class Enquiry {
    private readonly IMySiteDb _db;
    public Enquiry(IMySiteDb db)
    {
        _db = db;
    }
    /*
    Then some methods like Init(), Start(), Execute() etc.
    */
}

我已经安装并初始化了 structuremap.mvc 对象工厂容器:

x.For<IMySiteDb>().HttpContextScoped().Use<MySiteDb>();

但是启动查询 = 新的 Query(); 抛出错误 - 查询不包含接受 0 个参数的构造函数

我对依赖注入很陌生,找不到这种情况是如何工作的。此 DI 非常适合控制器。知道如何为后台线程执行此操作吗?

Azure Web 角色中后台线程的结构图构造函数注入

您需要从容器中获取对象,而不是通过自己调用构造函数。

enquiries = ObjectFactory.GetInstance<Enquiry >();

通常只想在应用程序中的一个位置调用容器。那个地方就是你所说的组合根。