在Simple Injector

时间:2016-09-30 15:46:06

标签: asp.net-mvc dependency-injection simple-injector

我在我的MVC应用程序错误中使用Simple Injector,我收到以下错误:

  

ApplicationUserManager类型的构造函数包含名称为' store'的参数。并键入未注册的IUserStore。请确保已注册IUserStore,或更改ApplicationUserManager的构造函数。

它要我注册UserStore,我想我必须将其注册到UserManager,但我不确定该怎么做。

我认为应该是这样的:

private static void InitializeContainer(Container container)
{
    container.Register<IAuthorisationManager, AuthorisationManager>();
    container.Register<IAuthorisationRepository, AuthorisationRepository>();
    container.Register<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>();
}

身份配置:

public class ApplicationUserManager : UserManager<ApplicationUser>
{
    public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store) { }
}

但我收到错误:

  

要使容器能够创建UserStore<ApplicationUser>,它应该只有一个公共构造函数:它有2.有关详细信息,请参阅https://simpleinjector.org/one-constructor

但它是默认的ASP.NET代码,所以我无法/不会改变它。

任何人都可以解释这个错误并告诉我如何解决它吗?

1 个答案:

答案 0 :(得分:1)

container.Register<IUserStore<ApplicationUser>>(() => new UserStore<ApplicationUser>());

需要注册用户存储,但它有多个构造函数,因此您需要添加上面的行