internal static void TryResolve(object sender, PatchManager.PatcherResolverEventArgs args) { if (UnhollowerSupport.IsGeneratedAssemblyType(args.Original.DeclaringType)) { args.MethodPatcher = new HarmonyIl2CppMethodPatcher(args.Original); } }
internal static void TryResolve(object sender, PatchManager.PatcherResolverEventArgs args) { if (Main.unhollower.IsInheritedFromIl2CppObjectBase(args.Original.DeclaringType) && !Main.unhollower.IsInjectedType(args.Original.DeclaringType)) { args.MethodPatcher = new HarmonyMethodPatcher(args.Original); } }
/// <summary> /// A handler for <see cref="PatchManager.ResolvePatcher"/> that checks if a method doesn't have a body /// (e.g. it's icall or marked with <see cref="DynDllImportAttribute"/>) and thus can be patched with /// <see cref="NativeDetour"/>. /// </summary> /// <param name="sender">Not used</param> /// <param name="args">Patch resolver arguments</param> /// public static void TryResolve(object sender, PatchManager.PatcherResolverEventArgs args) { if (args.Original.DeclaringType?.IsSubclassOf(typeof(Il2CppObjectBase)) == true) { var backend = new IL2CPPDetourMethodPatcher(args.Original); if (backend.isValid) { args.MethodPatcher = backend; } } }