//加载Event参数 static void LdEventArgs(SwitchMethodEmit item, ILGenerator gen) { if (item.Index > 3) { gen.Emit(OpCodes.Ldloc_S, item.DeclareLocal); } else { if (item.Index == 0) { gen.Emit(OpCodes.Ldloc_0); } else if (item.Index == 1) { gen.Emit(OpCodes.Ldloc_1); } else if (item.Index == 2) { gen.Emit(OpCodes.Ldloc_2); } else { gen.Emit(OpCodes.Ldloc_3); } } }
static void GetInheritor(SwitchMethodEmit from, List <SwitchMethodEmit> list, List <SwitchMethodEmit> result) { var inheritorList = list.Where(m => m.CaseType.BaseType == from.CaseType); foreach (var inheritor in inheritorList) { result.Add(inheritor); GetInheritor(inheritor, list, result); } }