此时,我可以轻松地将内容注入到控制器中,在某些情况下构建我自己的 ResolverServices 类。
我不知道如何让框架自动注入到非控制器类中。真正起作用的是让框架自动注入到我的控制器 IOptions
中,这实际上就是我的项目的配置:
public class MessageCenterController : Controller
{
private readonly MyOptions _options;
public MessageCenterController(IOptions<MyOptions> options)
{
_options = options.Value;
}
}
我在想我是否也可以在自己的课堂上这样做。当我模仿控制器时,我假设我很接近,像这样:
public class MyHelper
{
private readonly ProfileOptions _options;
public MyHelper(IOptions<ProfileOptions> options)
{
_options = options.Value;
}
public bool CheckIt()
{
return _options.SomeBoolValue;
}
}
我想我失败的地方在于,当我这样称呼它的时候:
public void DoSomething()
{
var helper = new MyHelper(??????);
if (helper.CheckIt())
{
// Do Something
}
}
我追踪这个问题的关键是,几乎所有关于 DI 的内容都是在控制器级别上讨论的。我试过在 Controller
对象源代码中寻找它发生的地方,但它在那里变得有点疯狂。
我确实知道我可以手动创建一个 IOptions 的实例并将其传递给 MyHelper
构造函数,但似乎我应该能够让框架这样做,因为它适用于 Controllers
。