Porque ela foi declara na classe parceiro comercial como privada? Poderia, por exemplo, dentro do método autenticar. return new AutenticacaoHelper().Autenticar(Senha, senha);
Porque ela foi declara na classe parceiro comercial como privada? Poderia, por exemplo, dentro do método autenticar. return new AutenticacaoHelper().Autenticar(Senha, senha);
Olá Diego, tudo certo?
Para isso acontecer, esse método deveria ser estático. Mas aí poderia ter problemas, pois poderia haver algum conflito em relação a dois usuários tentarem fazer a verificação de senhas com um intervalo pequeno de tempo. Se a verificação do primeiro usuário retornar false
e a do segundo retornar true
, a resposta poderia chegar como true
para o primeiro usuário.
Então, o motivo deste campo privado é isolar a verificação para cada usuário. Com isso, o compilador instanciará um objeto novo para cada vez que a classe for chamada. Então, apenas a própria classe poderá alterar o estado deste objeto.
Espero ter ajudado!
Segue o código da minha dúvida.
public class ParceiroComercial : IAutenticavel
{
private AutenticacaoHelper _autenticacaoHelper = new AutenticacaoHelper();
public string Senha { get; set; }
public bool Autenticar(string senha)
{
return _autenticacaoHelper.CompararSenhas(Senha, senha);
}
public bool AutenticarDuvida(string senha)
{
return new AutenticacaoHelper().CompararSenhas(Senha, senha);
}
}
ou seja, se eu escreve o código conforme o método "AutenticarDuvida" eu tenho problema de concorrência ?