Fix MAssembly::GetClass(MonoClass* monoClass) for generic classes

This commit is contained in:
Wojtek Figat
2021-02-19 11:03:56 +01:00
parent c86508ef57
commit fe1d1b20f8

View File

@@ -168,6 +168,7 @@ MClass* MAssembly::GetClass(const StringAnsiView& fullname) const
const auto& classes = GetClasses();
MClass* result = nullptr;
classes.TryGet(key, result);
#if 0
if (!result)
{
@@ -196,12 +197,25 @@ MClass* MAssembly::GetClass(MonoClass* monoClass) const
// Find class by native pointer
const auto& classes = GetClasses();
const auto typeToken = mono_class_get_type_token(monoClass);
for (auto i = classes.Begin(); i.IsNotEnd(); ++i)
{
if (i->Value->GetNative() == monoClass)
MonoClass* e = i->Value->GetNative();
if (e == monoClass || mono_class_get_type_token(e) == typeToken)
{
return i->Value;
}
}
#if 0
{
LOG(Warning, "Failed to find class {0}.{1} in assembly {2}. Classes:", String(mono_class_get_namespace(monoClass)), String(mono_class_get_name(monoClass)), ToString());
for (auto i = classes.Begin(); i.IsNotEnd(); ++i)
{
LOG(Warning, " - {0}", String(i->Key));
}
}
#endif
return nullptr;
}