diff --git a/Source/Engine/Scripting/ManagedCLR/MAssembly.Mono.cpp b/Source/Engine/Scripting/ManagedCLR/MAssembly.Mono.cpp index e40014e53..7df6c7abf 100644 --- a/Source/Engine/Scripting/ManagedCLR/MAssembly.Mono.cpp +++ b/Source/Engine/Scripting/ManagedCLR/MAssembly.Mono.cpp @@ -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; }