I need to dynamically set values on a bunch or properties on an object, call it a transmission object.
There will be a fair number of these transmission objects that
Reflection can be blazingly fast if you do it right (not as fast as static code, of course).
Finding a property-setter is slow. Invoking a delegate is fast.
You need to get and cache Delegate objects for each property-setter on each type of DTO. That's the slow part, but it's a one-time hit. Then you can Invoke each of the cached delegates for the property-setters of a given DTO type, passing in the DTO object and the new property value, but this part will be very fast.