ASP.NET 扩展方法中的核心依赖注入
ASP.NET Core Dependecy Injection in Extension Methods
我想扩展 UserManager
以允许通过用户名查找用户。我创建了一个扩展方法。我注意到实现它的最简单方法是获得 UserStore
。我无法通过 UserManager
执行此操作,因为 Store
受到保护。我决定使用 DI 将 UserStore
注入到我的方法中,但我什至不确定是否可行。
我试图作为第二个参数传递 IUserStore<T> store
但 VS 说没有给出任何参数。
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
namespace Learning.Extensions
{
public static class UserManagerExtension
{
public static Task<T> FindByUserNameAsync<T>(this UserManager<T> userManager, IUserStore<T> store, string userName) where T : class
{
var result = store.FindByNameAsync(userName, CancellationToken.None);
return result;
}
}
}
您可以使用现有方法按名称搜索用户:
public Task<TUser> UserManager<TUser>.FindByNameAsync(String);
可以在 ASP.NET Core Docs 中找到更多信息。
我想扩展 UserManager
以允许通过用户名查找用户。我创建了一个扩展方法。我注意到实现它的最简单方法是获得 UserStore
。我无法通过 UserManager
执行此操作,因为 Store
受到保护。我决定使用 DI 将 UserStore
注入到我的方法中,但我什至不确定是否可行。
我试图作为第二个参数传递 IUserStore<T> store
但 VS 说没有给出任何参数。
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
namespace Learning.Extensions
{
public static class UserManagerExtension
{
public static Task<T> FindByUserNameAsync<T>(this UserManager<T> userManager, IUserStore<T> store, string userName) where T : class
{
var result = store.FindByNameAsync(userName, CancellationToken.None);
return result;
}
}
}
您可以使用现有方法按名称搜索用户:
public Task<TUser> UserManager<TUser>.FindByNameAsync(String);
可以在 ASP.NET Core Docs 中找到更多信息。