I recently needed to pass a managed object from C# into a CLI wrapper by reference and, since this proved a bit difficult to search for, I thought I would add some google fodder here:
MyCliWrapperClass.hh:
void MyMethod(MyManagedObject^% mObj);
MyCliWrapperClass.cc:
void MyCliWrapperClass::MyMethod(MyManagedObject^% mObj)
{
// ...lorum ipsum...
}
MyManagedClass.cs
MyManagedObject myManagedObject = new MyManagedObject();
MyCliWrapperClass myCliWrapperClass = new MyCliWrapperClass();
myCliWrapperClass.MyMethod(ref myManagedObject);