Tengo una clase con muchos campos que representa valores físicos diferentes.Manera elegante de validar los valores
class Tunnel
{
private double _length;
private double _crossSectionArea;
private double _airDensity;
//...
Cada campo se expone mediante la propiedad de lectura/escritura. Necesito verificar en setter que el valor es correcto y generar excepción de lo contrario. Todas las validaciones son similares:
public double Length
{
get { return _length; }
set
{
if (value <= 0) throw new ArgumentOutOfRangeException("value",
"Length must be positive value.");
_length = value;
}
}
public double CrossSectionArea
{
get { return _crossSectionArea; }
set
{
if (value <= 0) throw new ArgumentOutOfRangeException("value",
"Cross-section area must be positive value.");
_crossSectionArea = value;
}
}
public double AirDensity
{
get { return _airDensity; }
set
{
if (value < 0) throw new ArgumentOutOfRangeException("value",
"Air density can't be negative value.");
_airDensity = value;
}
}
//...
¿Hay alguna manera elegante y flexible para llevar a cabo dicha validación?
creo que la forma en que lo ha hecho es la forma correcta de ir. El único cambio sería crear una 'función de validador 'a la que llame cada vez que esté listo para verificar * todos * sus valores al mismo tiempo. En mi experiencia, Visual Studio (no sé lo que estás usando) parece tragarse las excepciones que ocurren en un setter de propiedades. – jp2code
@ jp2code, las excepciones en setter funcionan bien. Acabo de revisarlo. –