mirror of
https://github.com/sinai-dev/UnityExplorer.git
synced 2025-01-07 10:03:38 +08:00
Add patch for Assembly.GetTypes to catch exceptions
This commit is contained in:
parent
48132b3d46
commit
a411ce2dba
33
src/Core/Reflection/Patches.cs
Normal file
33
src/Core/Reflection/Patches.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using HarmonyLib;
|
||||||
|
|
||||||
|
namespace UnityExplorer
|
||||||
|
{
|
||||||
|
public static class ReflectionPatches
|
||||||
|
{
|
||||||
|
public static void Init()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var method = typeof(Assembly).GetMethod(nameof(Assembly.GetTypes), new Type[0]);
|
||||||
|
var processor = ExplorerCore.Harmony.CreateProcessor(method);
|
||||||
|
processor.AddPrefix(typeof(ReflectionPatches).GetMethod(nameof(ReflectionPatches.Assembly_GetTypes)));
|
||||||
|
processor.Patch();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ExplorerCore.LogWarning($"Exception setting up Reflection patch: {ex}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Assembly_GetTypes(Assembly __instance, ref Type[] __result)
|
||||||
|
{
|
||||||
|
__result = __instance.TryGetTypes().ToArray();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -27,6 +27,8 @@ namespace UnityExplorer
|
|||||||
new ReflectionUtility();
|
new ReflectionUtility();
|
||||||
#endif
|
#endif
|
||||||
Instance.Initialize();
|
Instance.Initialize();
|
||||||
|
|
||||||
|
ReflectionPatches.Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void Initialize()
|
protected virtual void Initialize()
|
||||||
|
@ -218,6 +218,7 @@
|
|||||||
<Compile Include="Core\Config\InternalConfigHandler.cs" />
|
<Compile Include="Core\Config\InternalConfigHandler.cs" />
|
||||||
<Compile Include="CacheObject\CacheConfigEntry.cs" />
|
<Compile Include="CacheObject\CacheConfigEntry.cs" />
|
||||||
<Compile Include="CacheObject\Views\CacheConfigCell.cs" />
|
<Compile Include="CacheObject\Views\CacheConfigCell.cs" />
|
||||||
|
<Compile Include="Core\Reflection\Patches.cs" />
|
||||||
<Compile Include="CSConsole\CSAutoCompleter.cs" />
|
<Compile Include="CSConsole\CSAutoCompleter.cs" />
|
||||||
<Compile Include="CSConsole\LexerBuilder.cs" />
|
<Compile Include="CSConsole\LexerBuilder.cs" />
|
||||||
<Compile Include="CSConsole\Lexers\CommentLexer.cs" />
|
<Compile Include="CSConsole\Lexers\CommentLexer.cs" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user