You can't do Add(200) in the derived class because how do you know that T is a value type?
The compiler is trying to tell you that 200 can't be converted to T because it doesn't satisfy the constraints.
In order to do what you want, you need to either do what Solution 2 has, or there is a lengthy discussion in this
CodeProject article[
^].
Many have said, having a generic constraint for numeric types was left out of the framework. It would be nice to have but its just not there.