I am interested to see the progress of your work!
Some time ago I needed a way to create the bindings for Ogre and others C++ libraries, and with support for inheritance of classes in C++ directly from C#. Because I didn't have much time I created a reverse way, which is not practive I know, but I first defined the C# classes with some metadata, then after compiling these assemblies I generate another assembly that maps and creates the Bindings.
For C++ inheritance, because I could not change the pointers of the c++ method table directly, and I didn't know how to do it in a safe way for multiplatforms, I used a bidirectional call for the bindings (again, its not a good practive but worked).
There are some time that I worked with this, so I even don't remember some aspects of the implementation, but the code is here
https://github.com/danfma/InVision.
I don't have much time for now but if possible I want help in a near future. :P