Fix MAssembly::GetClass(MonoClass* monoClass) for generic classes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user