Постфикс гармонии в конструкторе с действием делегата в качестве аргумента

#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.