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