Когда я реализую класс RoleProvider и вызываю Roles.IsUserInRole(имя пользователя строки, string roleName), выполнение кода сначала переходит к методу GetRolesForUser (имя строки). Почему это? Я не хочу повторять все роли, когда я просто ищу единственное значение того, принадлежит ли этот пользователь одной роли. Является ли это ограничением класса поставщика ролей .NET или есть что-то, что я могу сделать, чтобы немного улучшить выполнение кода?
Здесь код вызова
if (Roles.IsUserInRole(CurrentUser.UserName, "Teacher")) {
И здесь реализация IsUserInRole
public override bool IsUserInRole(string username, string roleName) { return true; }
Но сначала будет реализован код GetRolesForUser:
public override string[] GetRolesForUser(string username) {
string[] roles = GetAllRoles();
List<string> userRoles = new List<string>();
foreach (string role in roles) {
if (IsUserInRole(username, role)) {
userRoles.Add(role);
}
}
return userRoles.ToArray();
}