That should be pretty simple. When you're modifying a constructor method,
just look for the first instruction after which the evaluation stack is
empty. That should be the constructor delegation call.
(Disclaimer: I'm not way an IL expert, so I'm not 100% sure about this, but
I'd try it this way.)
2011/12/23 seesharper <bernhard.rich...@gmail.com>
> Hi!
> I have this case where I need to inject code in a constructor AFTER
> the call to the base constructor.
> This is modifying an existing type so I do not have control over
> calling the base constructor.
> Is there any way I can search through the instructions and detect the
> call to the base constructor.
> L_0000: ldarg.0
> L_0001: call instance void [mscorlib]System.Object::.ctor()
> -> Inject code here ........
> Is there any generic way I can solve this so I can make sure my code
> is injected after the call to the base constructor?
> Regards
> Bernhard Richter
> --
> --
> mono-cecil