Esempio n. 1
0
        public bool IsReflectionBlocked(TypeDesc type)
        {
            switch (type.Category)
            {
            case TypeFlags.SzArray:
            case TypeFlags.Array:
            case TypeFlags.Pointer:
            case TypeFlags.ByRef:
                return(IsReflectionBlocked(((ParameterizedType)type).ParameterType));

            case TypeFlags.FunctionPointer:
                throw new NotImplementedException();

            default:
                Debug.Assert(type.IsDefType);

                TypeDesc typeDefinition = type.GetTypeDefinition();
                if (type != typeDefinition)
                {
                    if (_blockingPolicy.IsBlocked((MetadataType)typeDefinition))
                    {
                        return(true);
                    }

                    if (IsReflectionBlocked(type.Instantiation))
                    {
                        return(true);
                    }

                    return(false);
                }

                return(_blockingPolicy.IsBlocked((MetadataType)type));
            }
        }
Esempio n. 2
0
        public bool IsReflectionBlocked(TypeDesc type)
        {
            switch (type.Category)
            {
            case TypeFlags.SzArray:
            case TypeFlags.Array:
            case TypeFlags.Pointer:
            case TypeFlags.ByRef:
                return(IsReflectionBlocked(((ParameterizedType)type).ParameterType));

            case TypeFlags.FunctionPointer:
                MethodSignature pointerSignature = ((FunctionPointerType)type).Signature;

                for (int i = 0; i < pointerSignature.Length; i++)
                {
                    if (IsReflectionBlocked(pointerSignature[i]))
                    {
                        return(true);
                    }
                }

                return(IsReflectionBlocked(pointerSignature.ReturnType));

            default:
                Debug.Assert(type.IsDefType);

                TypeDesc typeDefinition = type.GetTypeDefinition();
                if (type != typeDefinition)
                {
                    if (_blockingPolicy.IsBlocked((MetadataType)typeDefinition))
                    {
                        return(true);
                    }

                    if (IsReflectionBlocked(type.Instantiation))
                    {
                        return(true);
                    }

                    return(false);
                }

                return(_blockingPolicy.IsBlocked((MetadataType)type));
            }
        }
 public bool IsBlocked(MetadataType typeDef)
 {
     return(_blockingPolicy.IsBlocked(typeDef));
 }