Verwenden Sie die interne Klasse im C# Harmony Patch
Posted: 06 Jan 2025, 05:05
Ich bin ziemlich neu in C# und verwende Harmony-Patches, um einen Mod für ein Videospiel zu erstellen. Die Methode, die ich zu patchen versuche, ist eine private Methode, die eine interne Klasseninstanz als Parameter verwendet. In einigen anderen Patches konnte ich Reflection verwenden, um private Methoden zu verarbeiten, aber wenn ich versuche, den internen Parameter hinzuzufügen, erhalte ich eine Build-Fehlermeldung, die besagt, dass auf die Klasse aufgrund ihrer Schutzstufe nicht zugegriffen werden kann.
Ich habe versucht, die Lösung dieser Frage zu verwenden, aber ich glaube, ich habe einige Probleme mit dem Umfang. Im Moment habe ich so etwas wie
Wenn ich dies versuche, wird mir mitgeteilt, dass der Typ- oder Namespace-Name „MyInternal“ nicht gefunden werden kann.
Wo sollte Ich füge meine MyInternal-Deklaration so ein, dass sie als Parameter für MethodPatch verwendet werden kann, und damit ich auch die myInternal-Instanz im Patch verwenden kann?
Ich habe versucht, die Lösung dieser Frage zu verwenden, aber ich glaube, ich habe einige Probleme mit dem Umfang. Im Moment habe ich so etwas wie
Code: Select all
using System;
...
using System.Reflection;
using HarmonyLib;
using namespacesFromGame; // Including namespace where the internal is declared
...
namespace MyMod
{
[HarmonyPatch(typeof(GameClass))]
class MyPatch
{
Type MyInternal = typeof(GameClass).Assembly.GetType("GameInternal");
public static bool MethodPatch(GameClass__instance,..., MyInternal myInternal, ...)
{
...
}
}
}
Wo sollte Ich füge meine MyInternal-Deklaration so ein, dass sie als Parameter für MethodPatch verwendet werden kann, und damit ich auch die myInternal-Instanz im Patch verwenden kann?