gpt4 book ai didi

dependency-injection - Microsoft DependencyInjection 是否支持非构造函数注入(inject)?

转载 作者:行者123 更新时间:2023-12-04 08:22:05 25 4
gpt4 key购买 nike

我正在尝试将 Microsoft.Extensions.DependencyInjection 合并到一个现有 ASP.NET 4.6.1 应用中。

我知道虽然 .NET Core 内置了它,但对于 4.6.1,您需要创建一些初始类,如 http://scottdorman.github.io/2016/03/17/integrating-asp.net-core-dependency-injection-in-mvc-4/ 中所述。 . (该文章似乎已过时,因为示例代码未显示 IDependencyResolverBeginScope()Dispose() 的实现。如果任何人都有更多更新的例子,将不胜感激。)

通过构造函数创建实例的 Controller 访问的“服务”相当简单,但我的问题是当我需要一个来自现有对象的属性或方法的“某物”的实例时.

例如,我有一个继承的 DbContext,它需要一个来自已登录用户的 System.Security.Principal.IIdentity 实例。

另一个例子是 ApplicationUser 的实例。 ApplicationUser继承了IdentityUser,调用AppUserManagerFindById()方法可以找到当前用户。

虽然可以使用 DI 轻松实例化 AppUserManager,但如何使用 DI 注入(inject) FindById() 方法的输出?对于基于 Microsoft 的框架,我似乎找不到关于此的任何文档或示例代码。 Unity 等其他框架似乎支持基于属性的注入(inject)。

本质上,DI 是否可以与所有现有类一起使用,或者您是否需要特别编写类代码以从一开始就支持 DI? (即只期望通过构造函数传入参数并确保这些实例本身是通过构造函数创建的)。

最佳答案

对“Microsoft DependencyInjection 是否支持非构造函数注入(inject)?”问题的简单而简短的回答是,不是。

开箱即用的 Microsoft DI 目前不像 Ninject 等其他框架那样支持属性注入(inject)。如果您需要该功能,我建议改用这些框架(我无法想象 MS 有任何计划很快添加属性注入(inject))。

您的另一个选择是考虑如何重构您的代码以使用构造函数注入(inject)来代替,这是首选方法

关于dependency-injection - Microsoft DependencyInjection 是否支持非构造函数注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771021/

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