Currently on Windows the CLR uses a VARIANT type to pass the object ref to the native PInvoke.
For non Windows systems it throws a TypeInitializationException.
After discussing with interop team a work is underway to either throw UnsupportedException or to properly marshal the obj ref.