Estoy trabajando en C# y estoy empezando a jugar con propiedades. Una cosa que no sé es cuál es la mejor manera/dónde colocar la lógica para los descriptores de acceso de las propiedades de clase y cómo manejar los errores.C# Propiedades - Establecer pregunta
Por ejemplo, decir que tengo esta clase (básico):
class Person
{
private int _Age = 18;
public Person()
{
}
public int Age
{
get
{
return _Age;
}
set
{
_Age = value;
}
}
}
Ahora dicen que tengo un requisito en la propiedad Edad, 0 < Edad < 100. ¿Dónde pongo la lógica para esto?
¿Debo ponerlo en la propiedad?
public int Age
{
get
{
return _Age;
}
set
{
if (value < 0 || value > 99)
// handle error
else
_Age = Convert.ToInt32(value);
}
}
oa través de la clase que está creando un objeto Person?
static void Main(string[] args)
{
Person him = new Person();
int NewAge = -10;
if (NewAge < 0 || NewAge > 100)
// handle error
else
him.Age = NewAge;
}
¿Qué sucede si hay un problema con NewAge (no cumple con mi restricción)? ¿Debo crear una excepción personalizada y lanzar eso? ¿Debo simplemente imprimir un mensaje que diga una edad válida?
He hecho algunas búsquedas en Google y no encuentro nada que responda completamente a mis preguntas. Necesito un libro: -/
Tenga en cuenta también que el colocador no necesita 'Convert.ToInt32 (valor)' ... porque la propiedad es un 'int', el' valor' también será un 'int'. – jerryjvl
¿No se considera esto una programación defensiva? ¿O lo llevo lejos? –
Lo estás llevando demasiado lejos. No hay posibilidad de que lo que obtienes no sea un int. –