Joy*_*Joy 4 asp.net-mvc dependency-injection simple-injector asp.net-mvc-4 asp.net-identity
我有一种情况,我想使用Identity框架中的自定义UserStore.所以我的控制器看起来像这样.
public AccountController()
: this(new UserManager<ApplicationUser>(new MyUserStore()))
{
}
public AccountController(UserManager<ApplicationUser> userManager)
{
UserManager = userManager;
}
Run Code Online (Sandbox Code Playgroud)
现在Simpleinjector不允许多个构造函数.它可以允许用一个构造函数注册这些类.当情况与上述情况类似时,我该如何解决这个问题.使用Simpleinjector注册.
Simple Injector需要一个公共构造函数.如果您有多个,则无法确定在运行时使用哪一个.
解决方案是一个设计问题 - 为什么需要多个构造函数?这可以通过问自己来回答......
我是否希望SimpleInjector创建IUserStore的实例,还是应该手动完成?
我认为它是前者,因为如果你不允许注入依赖项,它会使AccountController难以测试.
以下配置(通常存储在App_Start/SimpleInjectorInitializer.cs中)将允许IUserStore实例属于您的自定义类型:MyUserStore,如果构造函数需要这个,它将被注入IUserManager ...
container.Register<IUserStore, MyUserStore>();
container.Register<IUserManager<ApplicationUser>, UserManager<ApplicationUser>>();
Run Code Online (Sandbox Code Playgroud)