加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用SimpleInjector为AccountController注册Iden

发布时间:2020-12-16 06:27:51 所属栏目:asp.Net 来源:网络整理
导读:我有一种情况,我想使用Identity框架中的自定义UserStore.所以我的控制器看起来像这样. public AccountController(): this(new UserManagerApplicationUser(new MyUserStore())){}public AccountController(UserManagerApplicationUser userManager){ UserMan
我有一种情况,我想使用Identity框架中的自定义UserStore.所以我的控制器看起来像这样.

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

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

解决方法

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

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

我是否希望SimpleInjector创建IUserStore的实例,还是应该手动完成?

我认为它是前者,因为如果你不允许注入依赖项,它会使AccountController难以测试.

以下配置(通常存储在App_Start / SimpleInjectorInitializer.cs中)将允许IUserStore实例属于您的自定义类型:MyUserStore,如果构造函数需要这个,它将被注入IUserManager …

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读