예제 #1
0
        public static void OnAspectsInitialized(this MethodBody body, PointCut action)
        {
            var method = body.Method;

            if (!method.HasBody)
            {
                return;
            }

            if (!method.IsConstructor || method.IsStatic)
            {
                body.AfterEntry(action);
                return;
            }

            MethodReference initializer = method.DeclaringType.Methods.FirstOrDefault(m => m.Name == Constants.InstanceAspectsMethodName);

            if (initializer == null)
            {
                body.AfterEntry(action);
                return;
            }

            initializer = initializer.MakeHostInstanceGeneric(method.DeclaringType);
            body.OnCall(initializer, action);
        }