Validate the set accessors in a simple Triangle class
Assuming you'll have other shapes that would have the same requirement, one option you have is to have a class Side inside the class Shape, and put the validation in there.  Now every shape can declare as many sides as needed and each will be validated.  Some thing like this should work:

private class Side
{
    double length;
    public double Length
   {
        get{return length;}
        set
        {
            if(value &gt; 0)
            {
                 length = value;
            }
            else
            {
                 throw new ArgumentException("Value must be greater than 0");
            }
         }
    }
    Side(double _length)
    {
        Length = _length;
    }
}


In regards to the height, instead of having it passed to the constructor, calculate the height from the length of the sides, Heron's formula should work.