Reflection is an implementation detail. In a similar way how you can implement Classes internally different ways, so you can also implement DCI in different ways.
If you wish to see whether everything is behaving as it should you can take a look at this torture scenario:
You can read these for more about the torture test and discussion around it:
Looking over your code, few ideas:
* you can try moving Source and Destination private classes inside Context class to make it slightly clearer. Roles only make sense in a Context.
* Rename your "Context" class to something meaningful. You don't call all your classes "Class", hopefully. :)
Based on the code the implementation seems right, although, the custom calling convention for calling methods is confusing and probably won't give you the right feel for DCI. In a similar way confusing if you were to try to write class oriented code in C.