2003-11-24 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mono / metadata / icall.c
index 2e18526088e6ba37e979989dfaa80f1af6b4e515..41acc8c15963670cd00c5ae8ba7885cd7bb037d1 100644 (file)
@@ -2532,7 +2532,24 @@ ves_icall_System_Reflection_Assembly_InternalGetType (MonoReflectionAssembly *as
                        type = NULL;
        }
        else
-               type = mono_reflection_get_type (assembly->assembly->image, &info, ignoreCase);
+               if (assembly->assembly->dynamic) {
+                       /* Enumerate all modules */
+                       MonoReflectionAssemblyBuilder *abuilder = (MonoReflectionAssemblyBuilder*)assembly;
+                       int i;
+
+                       if (!abuilder->modules)
+                               type = NULL;
+                       else {
+                               for (i = 0; i < mono_array_length (abuilder->modules); ++i) {
+                                       MonoReflectionModuleBuilder *mb = mono_array_get (abuilder->modules, MonoReflectionModuleBuilder*, i);
+                                       type = mono_reflection_get_type (&mb->dynamic_image->image, &info, ignoreCase);
+                                       if (type)
+                                               break;
+                               }
+                       }
+               }
+               else
+                       type = mono_reflection_get_type (assembly->assembly->image, &info, ignoreCase);
        g_free (str);
        g_list_free (info.modifiers);
        g_list_free (info.nested);