Just uninstall where T : System.Object.
Pointing out:
where T : System.Object
you say that the types Tused in your method Parseshould inherit from the object.
But, since every object in C # inherits from System.Object, you do not need this restriction (and probably one of the reasons why the compiler does not allow this).
, null, T , :
where T: class
, .
Convert.ChangeType, , generics , :
T Parse<T>(string val)
{
return (T)Convert.ChangeType(val,typeof(T));
}