Sorry, I meant to add that bit in but forgot :-O This part is tricky for me to word so please accept my apologies before hand. JITting occurs when one of a few things happen: A method is being run for the first time, the underlying IL of an already JITted method has changed, or in certain circumstances the native code produced by ngen will be ignored (ASP.NET is one case). There are also some Debug/Profiling methods that will perfrom a re-JIT. Unless you are causing the JIT by running ngen, the native code generated will be tossed out after the Assembly has been unloaded. The native code generated is also AppDomain specific, so if you have two AppDomains each loading the same assembly then each method will be JITted once for each AppDomain. Now in your case, the JIT will only occur the first time each method is used, regardless of whether the object using that method is created by Reflection or regular code. James - out of order -