protected void cast_ifnotnull(H from_here, ref T to_value) where T : System.IConvertible
     {
         if (from_here != null)
             to_value = (T)Convert.ChangeType(from_here, typeof(T), CultureInfo.InvariantCulture);
         else to_value = default(T);
     }
    protected T cast_ifnotnull(H from_here) where T : System.IConvertible
    {
        if (from_here != null)
            return (T)Convert.ChangeType(from_here, typeof(T), CultureInfo.InvariantCulture);
        else return default(T);
    }

Non so. Non mi convince ancora.