Currently, Harmony can't patch nor MethodCopier.GetInstructions of methods with calli instructions containing generic instances in their signature such as in this example:
This is a rare but legitimate case that's come up in something I'm working on. Note that this isn't about open generics (like List<T>, which Harmony doesn't really support) but closed ones (e.g. List<int>).
Currently, Harmony can't patch nor
MethodCopier.GetInstructions
of methods withcalli
instructions containing generic instances in their signature such as in this example:Patching or calling
GetInstructions
on such methods results in:This is a rare but legitimate case that's come up in something I'm working on. Note that this isn't about open generics (like
List<T>
, which Harmony doesn't really support) but closed ones (e.g.List<int>
).The pull request fixes this issue by adding support for type signature elements of kind
GenericInstance
in the inline signature parser. The patch is directly based on Mono.Cecil's implementation: https://github.com/jbevain/cecil/blob/96026325ee1cb6627a3e4a32b924ab2905f02553/Mono.Cecil/AssemblyReader.cs#L3424This change purely expands the set of patchable methods so poses no backwards compatibility concerns.