private bool EmitParameters(EmitHelper emit, List<ParameterInfo> parameters) { bool hasOutRefParameters = false; int count = parameters.Count; for (int i = 0; i < count; i++) { if (parameters[i].IsOut) { count--; hasOutRefParameters = true; } } emit .ldc_i4_(count) .newarr(typeof(object)) ; int idx = 0; for (int i = 0; i < parameters.Count; i++) { ParameterInfo pi = parameters[i]; if (pi.IsOut) { // Output-only parameter // continue; } if (pi.ParameterType.IsByRef) hasOutRefParameters = true; emit .dup .ldc_i4_ (idx) .ldargEx (pi, true) .stelem_ref .end() ; ++idx; } return hasOutRefParameters; }