System.__Filters.FilterAttribute C# (CSharp) Method

FilterAttribute() private method

private FilterAttribute ( MemberInfo m, Object filterCriteria ) : bool
m System.Reflection.MemberInfo
filterCriteria Object
return bool
        internal virtual bool FilterAttribute(MemberInfo m,Object filterCriteria)
        {
            // Check that the criteria object is an Integer object
            if (filterCriteria == null)
                throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
    
            switch (m.MemberType) 
            {
            case MemberTypes.Constructor:
            case MemberTypes.Method: {

                MethodAttributes criteria = 0;
                try {
                    int i = (int) filterCriteria;
                    criteria = (MethodAttributes) i;
                }
                catch {
                    throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
                }

                
                MethodAttributes attr;
                if (m.MemberType == MemberTypes.Method)
                    attr = ((MethodInfo) m).Attributes;
                else
                    attr = ((ConstructorInfo) m).Attributes;
                    
                if (((criteria & MethodAttributes.MemberAccessMask) != 0) && (attr & MethodAttributes.MemberAccessMask) != (criteria & MethodAttributes.MemberAccessMask))
                    return false;
                if (((criteria & MethodAttributes.Static) != 0) && (attr & MethodAttributes.Static) == 0)
                    return false;
                if (((criteria & MethodAttributes.Final) != 0) && (attr & MethodAttributes.Final) == 0)
                    return false;
                if (((criteria & MethodAttributes.Virtual) != 0) && (attr & MethodAttributes.Virtual) == 0)
                    return false;
                if (((criteria & MethodAttributes.Abstract) != 0) && (attr & MethodAttributes.Abstract) == 0)
                    return false;
                if (((criteria & MethodAttributes.SpecialName)  != 0) && (attr & MethodAttributes.SpecialName) == 0)
                    return false;
                return true;
            }
            case MemberTypes.Field: 
            {
                FieldAttributes criteria = 0;
                try {
                    int i = (int) filterCriteria;
                    criteria = (FieldAttributes) i;
                }
                catch {
                    throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
                }

                FieldAttributes attr = ((FieldInfo) m).Attributes;
                if (((criteria & FieldAttributes.FieldAccessMask) != 0) && (attr & FieldAttributes.FieldAccessMask) != (criteria & FieldAttributes.FieldAccessMask))
                    return false;
                if (((criteria & FieldAttributes.Static) != 0) && (attr & FieldAttributes.Static) == 0)
                    return false;
                if (((criteria & FieldAttributes.InitOnly) != 0) && (attr & FieldAttributes.InitOnly) == 0)
                    return false;
                if (((criteria & FieldAttributes.Literal) != 0) && (attr & FieldAttributes.Literal) == 0)
                    return false;
                if (((criteria & FieldAttributes.NotSerialized) != 0) && (attr & FieldAttributes.NotSerialized) == 0)
                    return false;
                if (((criteria & FieldAttributes.PinvokeImpl) != 0) && (attr & FieldAttributes.PinvokeImpl) == 0)
                    return false;
                return true;
            }
            }
    
            return false;
        }
        // FilterName