[Mono-dev] how to coerce MonoObject* holding a System.Type to MonoClass*

Rodrigo Kumpera kumpera at gmail.com
Mon Dec 12 22:01:47 EST 2011

There are two ways, you can do it from managed land directly:

Type t = ...;
return t.TypeHandle.Value;

This will give you a MonoType* (which is easy to convert to a MonoClass*).

The other option is pretty shitty, due to a silly limitation in mono's
embedding API.
What you do is fetch the _impl field using mono_field_get_value

MonoType *type;
mono_field_get_value (obj, _impl_field, &type);

On Tue, Dec 13, 2011 at 12:50 AM, Jonathan Shore
<jonathan.shore at gmail.com>wrote:

>  I have a method call that returns System.Type. I want to make use of the
> type and do some reflection from C++. Have code like this:
> MonoClass* klass = (MonoClass*)mono_runtime_invoke (...);
> I am pretty sure that the casting to MonoClass* is not appropriate. The
> mono_runtime_invoke() function returns aMonoObject*. How do I coerce the
> MonoObject* containing a reference to Type to MonoClass*. I want to be
> able to be able to call:
> mono_class_get_properties (type, &iter)
> iteratively, later.
> FYI: I posted this on stackoverflow @
> http://stackoverflow.com/questions/8483406/coercing-monoobject-to-monoclass-where-a-method-call-returns-a-typeif anyone cares to answer.
> Thanks
> Jonathan
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20111213/50251d1e/attachment-0001.html 

More information about the Mono-devel-list mailing list