我有一种情况,我想使用来自 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/