IsUserInRole вызывает GetRolesForUser?

Когда я реализую класс RoleProvider и вызываю Roles.IsUserInRole (строковое имя пользователя, строковое имя роли), выполнение кода сначала переходит к методу 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();
    }
11
задан Josh 2 November 2010 в 21:22
поделиться