Esempio n. 1
0
 public static void BeforeExit(this MethodBody body, PointCut action)
 {
     foreach (var ret in body.Instructions.Where(i => i.OpCode == OpCodes.Ret).ToList())
     {
         var cut = new Cut(body, ret);
         cut.Here(action).Write(OpCodes.Ret);
         cut.Remove();
     }
 }
        public static Cut LoadAspect(this Cut cut, AspectDefinition aspect, MethodDefinition method, PointCut accessor)
        {
            FieldReference aspectField;

            if (method.IsStatic || aspect.Scope == Scope.Global)
            {
                aspectField = GetGlobalAspectField(aspect);
            }
            else
            {
                aspectField = GetInstanceAspectField(aspect, method.DeclaringType, cut);
                cut         = cut.Here(accessor);
            }

            return(cut.Load(aspectField));
        }
Esempio n. 3
0
        public static void Append(this MethodBody body, PointCut action)
        {
            var cut = new Cut(body, entry: false, exit: true);

            cut.Here(action);
        }