C# 扩展方法中的ASP.NET核心依赖注入

C# 扩展方法中的ASP.NET核心依赖注入,c#,asp.net-core,asp.net-core-2.2,C#,Asp.net Core,Asp.net Core 2.2,我想扩展UserManager以允许通过用户名查找用户。我已经创建了一个扩展方法。我注意到实现它最简单的方法是获取UserStore。我无法通过UserManager执行此操作,因为Store受保护。我决定使用DI将UserStore注入到我的方法中,但我甚至不确定这是否可行 我试图将其作为第二个参数传递,但VS表示没有给出任何参数 using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.I

我想扩展
UserManager
以允许通过用户名查找用户。我已经创建了一个扩展方法。我注意到实现它最简单的方法是获取
UserStore
。我无法通过
UserManager
执行此操作,因为
Store
受保护。我决定使用DI将
UserStore
注入到我的方法中,但我甚至不确定这是否可行

我试图将其作为第二个参数传递,但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;
        }
    }
}

使用系统线程;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Identity;
名称空间学习.扩展
{
公共静态类usermanager
{
公共静态任务FindByUserNameAsync(此UserManager UserManager,IUserStore store,字符串userName),其中T:class
{
var result=store.FindByNameAsync(用户名,CancellationToken.None);
返回结果;
}
}
}

您可以使用现有方法按名称搜索用户:

public Task<TUser> UserManager<TUser>.FindByNameAsync(String);
public Task UserManager.FindByNameAsync(字符串);

更多信息可在中找到。

您可以使用现有方法按名称搜索用户:

public Task<TUser> UserManager<TUser>.FindByNameAsync(String);
public Task UserManager.FindByNameAsync(字符串);

更多信息可以在中找到。

您不能注入到静态方法中。您使用的是什么类/版本?我认为UserManager已经有了FindByName和FindByLogin?您不能注入到静态方法中。您使用的是什么类/版本?我想UserManager已经有FindByName和FindByLogin了?