1
resposta

Acessar uma list por outra classe

Pessoal, estou fazendo uma validação de login e senha. Tenho uma lista de todos os usuários cadastrados com seus logins e senhas e preciso comparar se o que for digitado na console bate com o login e senha e então permitir ou não o acesso.

Mas tenho uma classe para a minha lista de usuários e outra para a validação de senha.

O que não consigo fazer é acessar a list criada em usuários a partir da classe validação de senha, segue código:

namespace CodificacaoPeca { public class ListaDeUsuarios { private int senhaCorreta;

    public bool validacaoLogin { get; set; }
    List<Usuario> listaUs = new List<Usuario>();

     public void LerListaParaValidacao(string LoginDigitado, string senhaDigitada) //Esse método serve para validar LOGIN e SENHA.
    {
        Console.WriteLine();
        Console.WriteLine("------------------------------");
        Console.WriteLine("VALIDAÇÃO DE LOGIN INICIADA");
        Console.WriteLine();
        Console.WriteLine($"Login digitado: {LoginDigitado} Senha digitada: {senhaDigitada}");
        Console.WriteLine();

        foreach (var code in listaUs)
        {
            Console.WriteLine($"Nome: {code.Nome}; Login: {code.Login}");

            if (code.Login == LoginDigitado)
            {
                do
                {
                    senhaCorreta = ValidarSenha(senhaDigitada, code.Senha);

                    if (senhaCorreta == 0)
                    {
                        Tentar3Vezes(code.Senha);
                    }

                } while (senhaCorreta == 0);

                validacaoLogin = true;
            }
            else
            {
                Console.WriteLine("Usuário ou senha incorretos.");
                Console.WriteLine();
            }

        }
    }

    private int ValidarSenha(string senhaDigitada2, string codeSenha)
    {
        int senhaCorreta1;
        if (senhaDigitada2 == codeSenha)
        {
            Console.WriteLine("Login e senha autenticados");
            senhaCorreta1 = 1;
        }
        else
        {
            Console.WriteLine("Senha incorreta");
            senhaCorreta1 = 0;
        }
        return senhaCorreta1;
    }

    public void Tentar3Vezes(string codeSenha)
    {
        for (int i = 0; i <= 1 ; i++)
        {
            Console.WriteLine($"Tentativas restantes: [{2 - i}]");
            Console.WriteLine("Digite a senha novamente:");
            string senhaTentativa = Console.ReadLine();

            senhaCorreta = ValidarSenha(senhaTentativa, codeSenha);

            if (senhaCorreta == 1)
            {
                break;
            }
            else
            {
                senhaCorreta = 2;
            }
        }
        if (senhaCorreta == 2)
        {
            Console.WriteLine("Login e/ou senha inválidos.");
        }
    }
}

}

1 resposta

Você pode torna-la publica da mesma forma que fez para a propriedade ValidacaoLogin

por exemplo:

public List<Usuario> listaUs { get; set; } = new List<Usuario>();

ou então criar um método de acesso e retornar apenas o que for de interesse

algo assim:

//Nesse caso estaria selecionando apenas o primeiro usuario da sua lista
public Usuario SelecionaUsuario()
{
        return listaUs.FirstOrDefault();
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software