Пример #1
0
 //加载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);
         }
     }
 }
Пример #2
0
            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);
                }
            }