其他类在这一点上,我的东西注射到我的控制器自如,在某些情况下建设自己的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
}
}
的proble我已经跟踪了这个实际上是关于DI在控制器层面谈论它的所有事情。我试图在Controller
对象源代码中寻找它发生的位置,但它在那里变得有点疯狂。
我知道我可以手动创建一个IOptions实例并将它传递给MyHelper
的构造函数,但似乎我应该可以使框架做到这一点,因为它适用于Controllers
。
您的帮助表示赞赏。
当您使用依赖注入你不叫'new'。从来没有为应该解决的对象 – Tseng
当我试图创建一个MyHelper的实例,我不叫新? (1)听起来太容易了,(2)这是一个语法错误。 :-) –
是的,这就是依赖注入的全部要点(特别是如果使用控制容器的反转来管理和实例化)。将服务/类之外的瞬时推送到ioc容器在内部执行的时间点。在无法通过构造函数注入的情况下,您将创建一个工厂并将工厂界面传递给您的服务。它的实现使用容器来解决它,在ASP.NET核心案例注入'IServiceProvider'在你的工厂和调用'IMyHelper helper = services.RequestService()' –
Tseng