Nice work. Personally, I'd do it this way: http://pastebin.com/38n0fEtF This way:- instead of 4 pointers (2 per delegate), the wrapper only contains 1 pointer; - once written, it only requires one line per property to be used; - it creates many more instantiations, which may be a Bad Thing(tm).
Thank you for a great example! D's power still surprises me a lot.