[Mono-dev] Detect List<> from C code
joe at unity3d.com
Sun Jun 21 09:59:58 EDT 2009
>>> > Now i have the generic type from the field in a MonoClass*
>>> > how do I correctly create an instance from the class?
>>> If the only thing you have is a List<T>, you cannot create
>>> a class from it because you need to know the T.
>>> But if your field's class is a *closed* generic type like
>>> List<int>, then mono_object_new () will work just fine.
>>> Yes, generics is a missing part of the embedding API and this is
>>> something to be addressed. One should be able to do things like
>>> get the instantiation vector or create a new instantation.
>> Hmm, so I have:
>> class MyClass
>> List<int> a;
>> I iterate through it from c code and use mono_class_get_fields,
>> Then i do mono_object_new and call mono_runtime_object_init on it.
>> Are you sure this should work? It generates an invalid object for
>> me. Is it possible that using System.Activator.CreateInstance
>> will work better or does this internally do the exact same thing?
> It works. See the attached samples.
Oops. Yeah, i got one of the mono_object_set_value calls wrong. It's
working beautifully now.
Thanks for the help.
More information about the Mono-devel-list