71 lines
No EOL
2.3 KiB
C#
71 lines
No EOL
2.3 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Reflection;
|
|
using HarmonyLib;
|
|
|
|
#if DEBUG
|
|
namespace CLre_server.API.Tools
|
|
{
|
|
public static class AccessToolsWarnings
|
|
{
|
|
internal static bool isEnabled = false;
|
|
|
|
public static void Enable()
|
|
{
|
|
isEnabled = true;
|
|
}
|
|
|
|
public static void Disable()
|
|
{
|
|
isEnabled = false;
|
|
}
|
|
}
|
|
|
|
[HarmonyPatch(typeof(AccessTools), "TypeByName")]
|
|
class AccessTools_TypeByName_Patch
|
|
{
|
|
[HarmonyPostfix]
|
|
public static void AfterMethodCall(Type __result, string name)
|
|
{
|
|
if (!AccessToolsWarnings.isEnabled) return;
|
|
if (__result == null)
|
|
{
|
|
var method = (new StackTrace()).GetFrame(2).GetMethod();
|
|
Utility.Logging.LogWarning($"[{method.DeclaringType.FullName}.{method.Name}] AccessTools.TypeByName(\"{name}\") returned null result");
|
|
}
|
|
}
|
|
}
|
|
|
|
[HarmonyPatch(typeof(AccessTools), "Method",
|
|
new Type[] {typeof(string), typeof(Type[]), typeof(Type[])})]
|
|
class AccessTools_Method_Patch
|
|
{
|
|
[HarmonyPostfix]
|
|
public static void AfterMethodCall(MethodInfo __result, string typeColonMethodname)
|
|
{
|
|
if (!AccessToolsWarnings.isEnabled) return;
|
|
if (__result == null)
|
|
{
|
|
var method = (new StackTrace()).GetFrame(2).GetMethod();
|
|
Utility.Logging.LogWarning($"[{method.DeclaringType.FullName}.{method.Name}] AccessTools.Method(\"{typeColonMethodname}\") returned null result");
|
|
}
|
|
}
|
|
}
|
|
|
|
[HarmonyPatch(typeof(AccessTools), "Method",
|
|
new Type[] {typeof(Type), typeof(string), typeof(Type[]), typeof(Type[])})]
|
|
class AccessTools_Method2_Patch
|
|
{
|
|
[HarmonyPostfix]
|
|
public static void AfterMethodCall(MethodInfo __result, Type type, string name)
|
|
{
|
|
if (!AccessToolsWarnings.isEnabled) return;
|
|
if (__result == null)
|
|
{
|
|
var method = (new StackTrace()).GetFrame(2).GetMethod();
|
|
Utility.Logging.LogWarning($"[{method.DeclaringType.FullName}.{method.Name}] AccessTools.Method(\"{type}\", \"{name}\") returned null result");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif |