I was wondering if it was possible to insert code in to the wrapper so it would look similar to this:

SWIGEXPORT void * SWIGSTDCALL CSharp_new_MyClass() {
void * jresult ;
MyClass *result = 0 ;

result = (MyClass *)new MyClass();

        result->IncrRefCount(); // Increase the reference count of this object

jresult = (void *)result; 
return jresult;

... since I'd like the proxy class to handle it's own reference count rather than have to wrap my SmartPtr, which I'd rather be only used in C++ code.