The documentation pages for Dynamic Delegates and Multi-Cast Delegates list “dynamic delegates” and “wrapped dynamic delegates” separately in certain tables.
For instance:
There is no difference in the syntax for wrapped and non-wrapped dynamic delegates; it’s therefore unclear what the difference between the two is. The text next to another table, in the Dynamic Delegates page, mentions that “Dynamic delegates can be declared with a wrapper proxy method for executing the delegate.”. Since the two share the same syntax, I can deduce that either all dynamic delegates are wrapped, or the decision to wrap a given delegate or leave it unwrapped is made by the engine at compile-time. I can only assume, then, that the entries for non-wrapped dynamic delegates in tables such as the one shown above are redundant.