我在ASP.NET 5中使用DI找到的每个教程或示例都只显示了它如何与Controllers和Razor Views一起使用。我需要将DI用于其他类,但不知道解析类型和提供实例的正确方法。现在我有一个HackyDependencyResolver
的实例,为了得到正确的实例,一切都必须引用。我想要访问ASP.NET的服务解析器,或者遵循其他一些最佳实践来解决依赖关系。
例如,如果我有
public class SomeClass
{
public SomeClass(IUseMe useMe)
{
}
}
它不是ASP.NET MVC控制器。在创建IUseMe
时,我需要一种模式来解析SomeClass
的正确实例。当然我可以建立自己的全球工厂,但这是最好的方式吗?
答案 0 :(得分:2)
DI与asp.net,控制器或视图无关。最后所有都是课程。考虑到操作是应用程序中的入口点,应该注入您需要的任何服务,服务本身具有一些依赖关系,并且在实例化控制器时DI容器将自动注入这些依赖关系。
您所要做的就是定义服务(并非每个对象都需要注入deps),然后将这些服务注册到Di Container中。
如何解析IUseMe以便我不依赖于特定的实现?
你没有。当实例化控制器时,Di Container基于配置执行此操作。一切都有流动,你不要凭空挑选课,说“我希望这个由Di容器创造”。好的,你可以,但这是错误的做法。
使用DI容器的重点不在于实例化服务。该框架负责与容器集成,您唯一的工作就是正确定义类并配置容器。