如何将Inject IDataProtectionProvider转换为Castle Windsor?

时间:2016-11-19 21:09:51

标签: c# dependency-injection asp.net-identity castle-windsor

我打算把这家酒店介绍给温莎城堡。

public static IDataProtectionProvider DataProtectionProvider { get; set; }

因为我在我的一个calasses中使用了这个属性。

private UserManagementContext _dbContext;
    private readonly IDataProtectionProvider _provider;
    private UserManager<IdentityUser> userManager;
    private RoleManager<IdentityRole> roleManager;

    public AuthenticationService(UserManagementContext dbContext,IDataProtectionProvider provider)
    {
        _dbContext = dbContext;
        _provider = provider;
        userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(_dbContext));
        roleManager=new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(_dbContext));


        if (provider != null)
        {
            userManager.UserTokenProvider =
                new DataProtectorTokenProvider<IdentityUser>(provider.Create("ASP.NET Identity"));
        }
    }

我在This中看到了一个使用Ninject的教程。

如何在温莎城堡中重写它?

1 个答案:

答案 0 :(得分:0)

我找到了我的答案。我应该使用所需的方法初始化接口:

 container.Register(Component.For<IDataProtectionProvider>().ImplementedBy<DpapiDataProtectionProvider>()
            .UsingFactoryMethod(x => app.GetDataProtectionProvider()));

我希望这有助于其他人。