1

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

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

Inquiry 使用 Entity Framework 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 并初始化了 objectfactory 容器:

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

但是发起查询 = new Enquiry(); 抛出错误 -查询不包含采用 0 个参数的构造函数

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

4

1 回答 1

1

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

enquiries = ObjectFactory.GetInstance<Enquiry >();

您通常只想在应用程序的一处调用容器。那个地方就是你所说的Composition root

于 2013-09-14T10:54:16.590 回答