Beispiel #1
0
        private static bool IsApplicableElementTarget(AspectDeclaration aspect, MethodDefinition method)
        {
            var elemetTargets = aspect.ElementTargets;

            if (elemetTargets == ElementTargets.Default)
            {
                return(true);
            }

            bool isCCtor    = method.IsStatic && method.IsConstructor;
            bool isCtor     = !method.IsStatic && method.IsConstructor;
            bool isProperty = method.IsPropertyMethod();

            if ((elemetTargets & ElementTargets.StaticConstructor) == ElementTargets.StaticConstructor && isCCtor)
            {
                return(true);
            }

            if ((elemetTargets & ElementTargets.InstanceConstructor) == ElementTargets.InstanceConstructor && isCtor)
            {
                return(true);
            }

            if ((elemetTargets & ElementTargets.Property) == ElementTargets.Property && isProperty)
            {
                return(true);
            }

            if ((elemetTargets & ElementTargets.Method) == ElementTargets.Method && !(isCtor || isCCtor || isProperty))
            {
                return(true);
            }

            return(false);
        }
Beispiel #2
0
        private static bool IsApplicableTypeTarget(AspectDeclaration aspect, MethodDefinition method)
        {
            if (String.IsNullOrEmpty(aspect.TypeTargets))
            {
                return(true);
            }

            var re = BuildRegexFromSearchPattern(aspect.TypeTargets);

            bool   searchInFullName = (re.ToString().Contains(@"\.") || re.ToString().Contains(@"/"));
            string typeName         = searchInFullName ? method.DeclaringType.FullName : method.DeclaringType.Name;

            return(re.IsMatch(typeName));
        }
Beispiel #3
0
        private static bool IsApplicableMemberTarget(AspectDeclaration aspect, MethodDefinition method)
        {
            if (String.IsNullOrEmpty(aspect.MemberTargets))
            {
                return(true);
            }

            var re = BuildRegexFromSearchPattern(aspect.MemberTargets);

            if (method.IsPropertyMethod())
            {
                return(re.IsMatch(method.Name) || re.IsMatch(TypeTools.GetPropertyNameByMethod(method)));
            }

            return(re.IsMatch(method.Name));
        }