/// <summary> /// Get the value of a field (even a private one) on a type /// </summary> /// <typeparam name="TEmit"></typeparam> /// <typeparam name="TType"></typeparam> /// <param name="emitter"></param> /// <param name="fieldName"></param> public static void GetRuntimeFieldValue <TEmit, TType>(this OptimisingEmitter <TEmit> emitter, string fieldName) { var field = typeof(TType).GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static) !; using (var local = emitter.DeclareLocal(typeof(TType), "GetRuntimeFieldValue_Callee", false)) { emitter.StoreLocal(local); emitter.LoadLocalAddress(local, true); emitter.LoadField(field); } }