Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

165
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!