控制器和视图之外的ASP.NET 5依赖注入

时间:2015-07-29 17:39:27

标签: asp.net dependency-injection asp.net-core

我在ASP.NET 5中使用DI找到的每个教程或示例都只显示了它如何与Controllers和Razor Views一起使用。我需要将DI用于其他类,但不知道解析类型和提供实例的正确方法。现在我有一个HackyDependencyResolver的实例,为了得到正确的实例,一切都必须引用。我想要访问ASP.NET的服务解析器,或者遵循其他一些最佳实践来解决依赖关系。

例如,如果我有

public class SomeClass
{
  public SomeClass(IUseMe useMe)
  {
  }
}

它不是ASP.NET MVC控制器。在创建IUseMe时,我需要一种模式来解析SomeClass的正确实例。当然我可以建立自己的全球工厂,但这是最好的方式吗?

1 个答案:

答案 0 :(得分:2)

DI与asp.net,控制器或视图无关。最后所有都是课程。考虑到操作是应用程序中的入口点,应该注入您需要的任何服务,服务本身具有一些依赖关系,并且在实例化控制器时DI容器将自动注入这些依赖关系。

您所要做的就是定义服务(并非每个对象都需要注入deps),然后将这些服务注册到Di Container中。

  

如何解析IUseMe以便我不依赖于特定的实现?

你没有。当实例化控制器时,Di Container基于配置执行此操作。一切都有流动,你不要凭空挑选课,说“我希望这个由Di容器创造”。好的,你可以,但这是错误的做法。

使用DI容器的重点不在于实例化服务。该框架负责与容器集成,您唯一的工作就是正确定义类并配置容器。