Элегантный способ проверки значений

У меня есть класс со многими полями, которые представляют разные физические значения.

class Tunnel
{
    private double _length;
    private double _crossSectionArea;
    private double _airDensity;
    //...

Каждое поле отображается с помощью свойства чтения / записи. Мне нужно проверить на сеттере правильность значения и в противном случае создать исключение. Все проверки аналогичны:

    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;
        }
    }
    //...

Есть ли какой-нибудь элегантный и гибкий способ выполнить такую ​​проверку?

9
задан Kirill Polishchuk 12 July 2011 в 15:50
поделиться