C# 类在其未声明为帮助器类时认为其为帮助器类

C# 类在其未声明为帮助器类时认为其为帮助器类,c#,asp.net-core,asp.net-identity,C#,Asp.net Core,Asp.net Identity,为了我的生命,我无法理解为什么,但是下面的课程产生了下面的错误。在过去的四十分钟里我一直在琢磨为什么 我得到的错误是 严重性代码说明项目文件行抑制状态错误 CS1106扩展方法必须在非泛型静态类中定义 仓库.Web D:\GitMaster\WareHouseCrm\Warehouse.Web\Helpers\SeedUsers.cs 14处于活动状态 正好是这条线 public class SeedUsers 我在启动时使用此方法为应用程序播种默认用户。请有人告诉我,当您看到下面的类中没有一

为了我的生命,我无法理解为什么,但是下面的课程产生了下面的错误。在过去的四十分钟里我一直在琢磨为什么

我得到的错误是

严重性代码说明项目文件行抑制状态错误 CS1106扩展方法必须在非泛型静态类中定义 仓库.Web D:\GitMaster\WareHouseCrm\Warehouse.Web\Helpers\SeedUsers.cs 14处于活动状态

正好是这条线

public class SeedUsers
我在启动时使用此方法为应用程序播种默认用户。请有人告诉我,当您看到下面的类中没有一个静态方法时,为什么编译器会认为它是一个静态方法类?这与导致此情况的标识有关吗?。如果有区别的话,我会使用.NET5

namespace WarehouseCrm.Web.Helpers
{
public class SeedUsers
{
    private WarehouseDBContext _context;

    public SeedUsers(WarehouseDBContext context)
    {
        _context = context;
    }

    public async void SeedRoles()
    {
        var roleStore = new RoleStore<IdentityRole>(_context);
        await roleStore.CreateAsync(new IdentityRole { Name = "admin", NormalizedName = "admin" });
        await roleStore.CreateAsync(new IdentityRole { Name = "manager", NormalizedName = "manager" });
        await roleStore.CreateAsync(new IdentityRole { Name = "agent", NormalizedName = "agent" });


    }
    public  async void SeedAdminUser(UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager, RoleStore<IdentityRole> roleStore, UserStore<ApplicationUser> userStore)
    {
        var user = new ApplicationUser
        {
            UserName = "testmanager@outlook.com",
            NormalizedUserName = "testmanager@outlook.com",
            Email = "testmanager@outlook.com",
            NormalizedEmail = "testmanager@outlook.com",
            FirstName = "test",
            LastName = "manager",
            EmailConfirmed = true,
            LockoutEnabled = false,
            SecurityStamp = Guid.NewGuid().ToString()
        };         
        
            var password = new PasswordHasher<ApplicationUser>();
            var hashed = password.HashPassword(user, "Test12345!");
            user.PasswordHash = hashed;
           
            await userStore.CreateAsync(user);
            await userStore.AddToRoleAsync(user, "admin");           
    }

    public  async void SeedUser1(UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager, RoleStore<IdentityRole> roleStore, UserStore<ApplicationUser> userStore)
    {
        var user = new ApplicationUser
        {
            UserName = "user1@test.com",
            NormalizedUserName = "user1@test.com",
            Email = "user1@test.com",
            NormalizedEmail = "user1@test.com",
            FirstName = "Martha",
            LastName = "Jones",
            EmailConfirmed = true,
            LockoutEnabled = false,
            SecurityStamp = Guid.NewGuid().ToString()
        };       


            var password = new PasswordHasher<ApplicationUser>();
            var hashed = password.HashPassword(user, "Test12345!");
            user.PasswordHash = hashed;
              await userStore.CreateAsync(user);
            await userStore.AddToRoleAsync(user, "agent");
        
    }
    public  async void SeedUser2(UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager, RoleStore<IdentityRole> roleStore, UserStore<ApplicationUser> userStore)
    {
        var user = new ApplicationUser
        {
            UserName = "user2@test.com",
            NormalizedUserName = "user2@test.com",
            Email = "user2@test.com",
            NormalizedEmail = "user2@test.com",
            FirstName = "Matt",
            LastName = "Smith",
            EmailConfirmed = true,
            LockoutEnabled = false,
            SecurityStamp = Guid.NewGuid().ToString()
        };
     
            var password = new PasswordHasher<ApplicationUser>();
            var hashed = password.HashPassword(user, "Test12345!");
            user.PasswordHash = hashed;

            await userStore.CreateAsync(user);
            await userStore.AddToRoleAsync(user, "agent");
    }

    private  async Task SeedClaimsForSuperAdminAsync(this RoleManager<IdentityRole> roleManager)
    {
        var adminRole =await roleManager.FindByNameAsync("admin");
        await AddPermissionClaim(roleManager,adminRole, "StockItems");
    }
    public List<string> GeneratePermissionsForModule(string module)
    {
        return new List<string>()
        {
            $"Permissions.{module}.Create",
            $"Permissions.{module}.View",
            $"Permissions.{module}.Edit",
            $"Permissions.{module}.Delete",
        };
    }
    public  async Task AddPermissionClaim( RoleManager<IdentityRole> roleManager, IdentityRole role, string module)
    {
        var allClaims = await roleManager.GetClaimsAsync(role);
        var allPermissions = GeneratePermissionsForModule(module);
        foreach (var permission in allPermissions)
        {
            if (!allClaims.Any(a => a.Type == "Permission" && a.Value == permission))
            {
                await roleManager.AddClaimAsync(role, new Claim("Permission", permission));
            }
        }
    }
}
namespace WarehouseCrm.Web.Helpers
{
公共类种子用户
{
私有仓库上下文_上下文;
公共种子用户(WarehousedContext上下文)
{
_上下文=上下文;
}
公共异步void SeedRoles()
{
var roleStore=新的roleStore(_上下文);
wait roleStore.CreateAsync(新的IdentityRole{Name=“admin”,NormalizedName=“admin”});
wait roleStore.CreateAsync(新的IdentityRole{Name=“manager”,NormalizedName=“manager”});
wait roleStore.CreateAsync(新的IdentityRole{Name=“agent”,NormalizedName=“agent”});
}
公共异步void SeedAdminUser(UserManager UserManager、RoleManager RoleManager、RoleStore RoleStore、UserStore UserStore)
{
var user=新应用程序用户
{
用户名=”testmanager@outlook.com",
NormalizedUserName=”testmanager@outlook.com",
电子邮件=”testmanager@outlook.com",
标准化邮件=”testmanager@outlook.com",
FirstName=“test”,
LastName=“经理”,
emailconfirm=true,
LockoutEnabled=false,
SecurityStamp=Guid.NewGuid().ToString()
};         
var password=new PasswordHasher();
var hashed=password.HashPassword(用户“Test12345!”);
user.PasswordHash=散列;
等待userStore.CreateAsync(用户);
等待userStore.AddToRoleAsync(用户,“admin”);
}
公共异步void SeedUser1(UserManager UserManager、RoleManager RoleManager、RoleStore RoleStore、UserStore UserStore)
{
var user=新应用程序用户
{
用户名=”user1@test.com",
NormalizedUserName=”user1@test.com",
电子邮件=”user1@test.com",
标准化邮件=”user1@test.com",
FirstName=“玛莎”,
LastName=“琼斯”,
emailconfirm=true,
LockoutEnabled=false,
SecurityStamp=Guid.NewGuid().ToString()
};       
var password=new PasswordHasher();
var hashed=password.HashPassword(用户“Test12345!”);
user.PasswordHash=散列;
等待userStore.CreateAsync(用户);
等待userStore.AddToRoleAsync(用户,“代理”);
}
公共异步void SeedUser2(UserManager UserManager、RoleManager RoleManager、RoleStore RoleStore、UserStore UserStore)
{
var user=新应用程序用户
{
用户名=”user2@test.com",
NormalizedUserName=”user2@test.com",
电子邮件=”user2@test.com",
标准化邮件=”user2@test.com",
FirstName=“Matt”,
LastName=“史密斯”,
emailconfirm=true,
LockoutEnabled=false,
SecurityStamp=Guid.NewGuid().ToString()
};
var password=new PasswordHasher();
var hashed=password.HashPassword(用户“Test12345!”);
user.PasswordHash=散列;
等待userStore.CreateAsync(用户);
等待userStore.AddToRoleAsync(用户,“代理”);
}
专用异步任务SeedClaimsForSuperAdminAsync(此角色管理器角色管理器)
{
var adminRole=await roleManager.FindByNameAsync(“admin”);
等待AddPermissionClaim(角色经理、管理员角色、“库存项目”);
}
公共列表GeneratePermissionsForModule(字符串模块)
{
返回新列表()
{
$“权限{module}.Create”,
$“权限{module}.View”,
$“权限{module}.Edit”,
$“权限{module}.Delete”,
};
}
公共异步任务AddPermissionClaim(RoleManager RoleManager、IdentityRole角色、字符串模块)
{
var allClaims=await roleManager.GetClaimsAsync(角色);
var allPermissions=GeneratePermissionsForModule(模块);
foreach(所有权限中的var权限)
{
if(!allClaims.Any(a=>a.Type==“Permission”&&a.Value==Permission))
{
等待roleManager.addClaimesync(角色,新声明(“许可”),许可);
}
}
}
}

}

“私有异步任务SeedClaimsForSuperAdminAsync(this RoleManager RoleManager)”-
定义了一个扩展方法,因此类必须是
静态的
。我怎么看不到这一点谢谢@LlamaNo:)我也有代码盲症。我花了一上午的时间试图弄清楚为什么有些东西不起作用,结果发现我没有在我的DI容器中注册它