Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

171
Visualizações
¿Por qué puedo establecer las propiedades de una propiedad establecida de forma privada?

Tengo una clase LoginManager que tiene un campo privado currentUser y una propiedad pública CurrentUser para no permitirme cambiar accidentalmente el valor de CurrentUser desde fuera de la clase LoginManager .

CurrentUser es { get; } solo, pero aún puedo cambiar las propiedades en el currentUser subyacente que es privado.

p.ej.

 Console.WriteLine(loginManager.CurrentUser.ClockedIn.ToString()); // true loginManager.CurrentUser.ClockedIn = false; Console.WriteLine(loginManager.CurrentUser.ClockedIn.ToString()); // false loginManager.CurrentUser.ClockedIn = true; Console.WriteLine(loginManager.CurrentUser.ClockedIn.ToString()); // true

LoginManager.cs

 public class LoginManager { private User? currentUser { get; set; } private readonly ApplicationDbContext dbContext; public event EventHandler CurrentUserChanged; public User? CurrentUser { get { return currentUser; } } //... }

Usuario.cs

 public class User { public Guid Id { get; set; } public string Name { get; set; } public string Username { get; set; } public string Password { get; set; } public bool ClockedIn { get; set; } }

Lo quiero para que no pueda cambiar CurrentUser desde fuera de la clase LoginManager . ¿Alguien podría indicarme la dirección correcta?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Creo que veo el problema, las instancias privadas de CurrentUser get y set propiedades que están expuestas fuera de la clase, ya que esas variables miembro tienen un alcance public .

¿Por qué no hacer que las propiedades del User sean private ?

 public class User { private Guid Id { get; set; } private string Name { get; set; } private string Username { get; set; } private string Password { get; set; } private bool ClockedIn { get; set; } }

O si necesita get el private set marcas de propiedades:

 public class User { public Guid Id { get; private set; } public string Name { get; private set; } public string Username { get; private set; } public string Password { get; private set; } public bool ClockedIn { get; private set; } }

O hágalos explícitamente de readonly para que solo puedan inicializarse en el Constructor :

 public class User { public readonly Guid Id { get; private set; } public readonly string Name { get; private set; } public readonly string Username { get; private set; } public readonly string Password { get; private set; } public readonly bool ClockedIn { get; private set; } public User(Guid Id, string Name, string Username, string Password, bool ClockedIn) { this.Id = Id; this.Name = NameName; this.Username = Username; this.Password = Password; this.ClockedIn = ClockedIn; } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda