use new T() not Activator.CreateInstance to make an object
Add the generic constraint that DTOS much have a parameterless constructor. It did anyway, just not visibly: previous use of Activator.CreateInstance() depended on new() being present. Now we will fail at compiler-time not runtime if it's not there.
StringDeserializer is generic on the method not the class
the generic on ResponseParser can also move down to the Parse method