asp.net-mvc - 使用 Simpleinjector 为 AccountController 注册 Identity Framework UserStore

标签 asp.net-mvc asp.net-mvc-4 dependency-injection asp.net-identity simple-injector

我有一种情况,我想使用来自 Identity framework 的自定义 UserStore。所以我的 Controller 看起来像这样。

public AccountController()
: this(new UserManager<ApplicationUser>(new MyUserStore()))
{
}
public AccountController(UserManager<ApplicationUser> userManager)
{
      UserManager = userManager;
}

现在 Simpleinjector 不允许多个构造函数。它可以允许使用一个构造函数注册这些类。当情况类似于上述情况时,我应该如何解决这个问题。使用 Simpleinjector 注册。

最佳答案

Simple Injector 需要一个公共(public)构造函数。如果您有多个,它无法确定在运行时使用哪一个。

解决方案是设计问题 - 为什么需要多个构造函数?这可以通过问自己来回答...

我想要 SimpleInjector 创建 IUserStore 的实例还是应该手动完成?

我会假设它是前者,因为如果您不允许注入(inject)依赖项,它会使 AccountController 难以测试。

以下配置(通常存储在 App_Start/SimpleInjectorInitializer.cs 中)将允许 IUserStore 实例为您的自定义类型:MyUserStore,并且如果构造函数需要此配置,则将被注入(inject) IUserManager...

container.Register<IUserStore, MyUserStore>();    
container.Register<IUserManager<ApplicationUser>, UserManager<ApplicationUser>>();

关于asp.net-mvc - 使用 Simpleinjector 为 AccountController 注册 Identity Framework UserStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22933194/

相关文章:

c# - 从 ajax 发送一个空数组在 ASP.NET MVC 操作中给出了一个空参数

javascript - jQuery.cookie 不存储我的 JSON 字符串

asp.net-mvc - WIF 不适用于 ASP.NET MVC 4

dependency-injection - 构造函数注入(inject)——我们也注入(inject)工厂吗?

c# - 如何在 MVC Controller 中通过其 Id 使用 div?

c# - 如果我所有的 .Net Controllers/Action 都需要 Authorize Attr,为什么没有一个属性只使用那些不需要的?

visual-studio - &lt;script&gt; 中的 Razor @if 被 VS11 拒绝

asp.net-mvc - Entity Framework 更新记录不起作用

angularjs - React 依赖注入(inject)或类似的?

asp.net-mvc-3 - Autofac 属性注入(inject)