【发布时间】:2017-09-05 10:54:48
【问题描述】:
我有一个需要ApplicationUser 的类(来自 ASP.NET Identity)。该实例应该是当前用户。
public class SomeClass
{
public SomeClass(ApplicationUser user)
{
目前,我正在做的是从控制器注入当前用户:
var currentUser = await _userManager.GetUserAsync(User);
var instance = new SomeClass(currentUser);
现在我想使用微软提供的依赖注入。我不知道如何将ApplicationUser 添加到服务中。它需要User,这是控制器的一个属性。
那么如何通过微软提供的DI注入ApplicationUser(当前用户的实例)呢?
【问题讨论】:
-
一般来说,你应该注入依赖项,而不是数据。最好在调用每个方法(或显式调用某些
Init(context))时提供所需的上下文(在您的情况下是调用用户),以便该类型的消费者更加了解实际需求。由 DI 在幕后自动注入上下文将提高您的 DI 技能,但可能会在未来导致不一致。 -
@haim770 谢谢。我想我只是懒惰,不想在每个方法调用中都提供它。您说的
Init(context)可能是另一种选择,我想知道如何强制调用它。 -
正如@haim770 所说,防止将运行时数据注入到您的组件中。更多详情请阅读this。
标签: c# dependency-injection asp.net-core asp.net-core-mvc asp.net-core-identity