gpt4 book ai didi

Controller 和 View 之外的 ASP.NET 5 依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-04 18:03:07 25 4
gpt4 key购买 nike

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

例如如果我有

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

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

最佳答案

DI 与 asp.net、 Controller 或 View 无关。最后都是类。考虑到操作是您应用程序中的入口点,您需要的任何服务都应该被注入(inject),服务本身有一些依赖关系,这些依赖关系将在 DI 容器实例化 Controller 时自动注入(inject)。

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

How do I resolve IUseMe so that I'm not dependent on a particular implementation?

你不知道。当实例化 Controller 时,Di Container 会根据配置执行此操作。一切都有流程,你不能凭空挑选类然后说“我想要这个由 Di 容器创建”。可以,但这是错误的方法。

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

关于 Controller 和 View 之外的 ASP.NET 5 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31707434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com