#c# #monkeypatching
Вопрос:
Я использую harmony для постфикса конструктора, который выглядит следующим образом
public Class1(Action onAction)
{
<code>
}
Мой патч выглядит так
[HarmonyPostfix]
[HarmonyPatch(typeof(Class1), MethodType.Constructor, typeof(Action))]
public void Postfix(Class1 __instance)
{
<code>
}
Постфикс вообще не запускается. Я предполагаю, что проблема заключается в typeof(Действие), потому что у меня были другие патчи, которые выглядели почти так же, просто имели обычные классы в качестве типов, а не делегатов. Кто-нибудь знает, как заставить этот тип действий работать здесь?
Комментарии:
1. Ваш исходный метод, скорее всего, встроен во время выполнения. Убедитесь, что ваш патч исправлен, добавив
[HarmonyDebug]
его, и посмотрите, содержит ли журнал Harmony код IL замены. Если это произойдет, то ваш постфикс будет выполнен, если только целое не встроено или оригинал каким-то образом не создаст исключение и, следовательно, никогда не достигнет вашего вызова postfix.