예제 #1
0
        public override bool IsSubsetOf(IPermission target)
        {
            IsolatedStorageFilePermission isfp = Cast(target);

            if (isfp == null)
            {
                return(IsEmpty());
            }
            if (isfp.IsUnrestricted())
            {
                return(true);
            }

            if (m_userQuota > isfp.m_userQuota)
            {
                return(false);
            }
            if (m_machineQuota > isfp.m_machineQuota)
            {
                return(false);
            }
            if (m_expirationDays > isfp.m_expirationDays)
            {
                return(false);
            }
            if (m_permanentData != isfp.m_permanentData)
            {
                return(false);
            }
            if (m_allowed > isfp.m_allowed)
            {
                return(false);
            }
            return(true);
        }
예제 #2
0
        //------------------------------------------------------
        //
        // IPERMISSION IMPLEMENTATION
        //
        //------------------------------------------------------

        public override IPermission Union(IPermission target)
        {
            if (target == null)
            {
                return(this.Copy());
            }
            else if (!VerifyType(target))
            {
                throw new
                      ArgumentException(
                          Environment.GetResourceString("Argument_WrongType", this.GetType().FullName)
                          );
            }

            IsolatedStorageFilePermission operand = (IsolatedStorageFilePermission)target;

            if (this.IsUnrestricted() || operand.IsUnrestricted())
            {
                return(new IsolatedStorageFilePermission(PermissionState.Unrestricted));
            }
            else
            {
                IsolatedStorageFilePermission union;
                union                  = new IsolatedStorageFilePermission(PermissionState.None);
                union.m_userQuota      = max(m_userQuota, operand.m_userQuota);
                union.m_machineQuota   = max(m_machineQuota, operand.m_machineQuota);
                union.m_expirationDays = max(m_expirationDays, operand.m_expirationDays);
                union.m_permanentData  = m_permanentData || operand.m_permanentData;
                union.m_allowed        = (IsolatedStorageContainment)max((long)m_allowed, (long)operand.m_allowed);
                return(union);
            }
        }
예제 #3
0
        public override bool IsSubsetOf(IPermission target)
        {
            if (target == null)
            {
                return((m_userQuota == 0) &&
                       (m_machineQuota == 0) &&
                       (m_expirationDays == 0) &&
                       (m_permanentData == false) &&
                       (m_allowed == IsolatedStorageContainment.None));
            }

            try
            {
                IsolatedStorageFilePermission operand = (IsolatedStorageFilePermission)target;

                if (operand.IsUnrestricted())
                {
                    return(true);
                }

                return((operand.m_userQuota >= m_userQuota) &&
                       (operand.m_machineQuota >= m_machineQuota) &&
                       (operand.m_expirationDays >= m_expirationDays) &&
                       (operand.m_permanentData || !m_permanentData) &&
                       (operand.m_allowed >= m_allowed));
            }
            catch (InvalidCastException)
            {
                throw new
                      ArgumentException(
                          Environment.GetResourceString("Argument_WrongType", this.GetType().FullName)
                          );
            }
        }
예제 #4
0
        public override IPermission Intersect(IPermission target)
        {
            if (target == null)
            {
                return(null);
            }
            if (!base.VerifyType(target))
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", new object[] { base.GetType().FullName }));
            }
            IsolatedStorageFilePermission permission = (IsolatedStorageFilePermission)target;

            if (permission.IsUnrestricted())
            {
                return(this.Copy());
            }
            if (base.IsUnrestricted())
            {
                return(target.Copy());
            }
            IsolatedStorageFilePermission permission2 = new IsolatedStorageFilePermission(PermissionState.None)
            {
                m_userQuota      = IsolatedStoragePermission.min(base.m_userQuota, permission.m_userQuota),
                m_machineQuota   = IsolatedStoragePermission.min(base.m_machineQuota, permission.m_machineQuota),
                m_expirationDays = IsolatedStoragePermission.min(base.m_expirationDays, permission.m_expirationDays),
                m_permanentData  = base.m_permanentData && permission.m_permanentData,
                m_allowed        = (IsolatedStorageContainment)((int)IsolatedStoragePermission.min((long)base.m_allowed, (long)permission.m_allowed))
            };

            if ((((permission2.m_userQuota == 0L) && (permission2.m_machineQuota == 0L)) && ((permission2.m_expirationDays == 0L) && !permission2.m_permanentData)) && (permission2.m_allowed == IsolatedStorageContainment.None))
            {
                return(null);
            }
            return(permission2);
        }
예제 #5
0
        /// <summary>创建一个权限,该权限是当前权限与指定权限的并集。</summary>
        /// <returns>一个新权限,它表示当前权限与指定权限的并集。</returns>
        /// <param name="target">将与当前权限合并的权限。它必须与当前权限属于同一类型。</param>
        /// <exception cref="T:System.ArgumentException">
        /// <paramref name="target" /> 参数不是 null,而且与当前权限不是同一类型。</exception>
        public override IPermission Union(IPermission target)
        {
            if (target == null)
            {
                return(this.Copy());
            }
            if (!this.VerifyType(target))
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", (object)this.GetType().FullName));
            }
            IsolatedStorageFilePermission storageFilePermission1 = (IsolatedStorageFilePermission)target;

            if (this.IsUnrestricted() || storageFilePermission1.IsUnrestricted())
            {
                return((IPermission) new IsolatedStorageFilePermission(PermissionState.Unrestricted));
            }
            IsolatedStorageFilePermission storageFilePermission2 = new IsolatedStorageFilePermission(PermissionState.None);
            long num1 = IsolatedStoragePermission.max(this.m_userQuota, storageFilePermission1.m_userQuota);

            storageFilePermission2.m_userQuota = num1;
            long num2 = IsolatedStoragePermission.max(this.m_machineQuota, storageFilePermission1.m_machineQuota);

            storageFilePermission2.m_machineQuota = num2;
            long num3 = IsolatedStoragePermission.max(this.m_expirationDays, storageFilePermission1.m_expirationDays);

            storageFilePermission2.m_expirationDays = num3;
            int num4 = this.m_permanentData ? 1 : (storageFilePermission1.m_permanentData ? 1 : 0);

            storageFilePermission2.m_permanentData = num4 != 0;
            int num5 = (int)IsolatedStoragePermission.max((long)this.m_allowed, (long)storageFilePermission1.m_allowed);

            storageFilePermission2.m_allowed = (IsolatedStorageContainment)num5;
            return((IPermission)storageFilePermission2);
        }
예제 #6
0
        /// <summary>创建并返回一个权限,该权限是当前权限和指定权限的交集。</summary>
        /// <returns>一个新权限,它表示当前权限与指定权限的交集。如果交集为空,则此新权限为 null。</returns>
        /// <param name="target">与当前权限对象相交的权限。它必须与当前权限属于同一类型。</param>
        /// <exception cref="T:System.ArgumentException">
        /// <paramref name="target" /> 参数不是 null,而且与当前权限不是同一类型。</exception>
        public override IPermission Intersect(IPermission target)
        {
            if (target == null)
            {
                return((IPermission)null);
            }
            if (!this.VerifyType(target))
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", (object)this.GetType().FullName));
            }
            IsolatedStorageFilePermission storageFilePermission1 = (IsolatedStorageFilePermission)target;

            if (storageFilePermission1.IsUnrestricted())
            {
                return(this.Copy());
            }
            if (this.IsUnrestricted())
            {
                return(target.Copy());
            }
            IsolatedStorageFilePermission storageFilePermission2 = new IsolatedStorageFilePermission(PermissionState.None);

            storageFilePermission2.m_userQuota      = IsolatedStoragePermission.min(this.m_userQuota, storageFilePermission1.m_userQuota);
            storageFilePermission2.m_machineQuota   = IsolatedStoragePermission.min(this.m_machineQuota, storageFilePermission1.m_machineQuota);
            storageFilePermission2.m_expirationDays = IsolatedStoragePermission.min(this.m_expirationDays, storageFilePermission1.m_expirationDays);
            storageFilePermission2.m_permanentData  = this.m_permanentData && storageFilePermission1.m_permanentData;
            storageFilePermission2.m_allowed        = (IsolatedStorageContainment)IsolatedStoragePermission.min((long)this.m_allowed, (long)storageFilePermission1.m_allowed);
            if (storageFilePermission2.m_userQuota == 0L && storageFilePermission2.m_machineQuota == 0L && (storageFilePermission2.m_expirationDays == 0L && !storageFilePermission2.m_permanentData) && storageFilePermission2.m_allowed == IsolatedStorageContainment.None)
            {
                return((IPermission)null);
            }
            return((IPermission)storageFilePermission2);
        }
예제 #7
0
        /// <summary>Determines whether the current permission is a subset of the specified permission.</summary>
        /// <param name="target">A permission that is to be tested for the subset relationship. This permission must be of the same type as the current permission. </param>
        /// <returns>
        ///     <see langword="true" /> if the current permission is a subset of the specified permission; otherwise, <see langword="false" />.</returns>
        /// <exception cref="T:System.ArgumentException">The <paramref name="target" /> parameter is not <see langword="null" /> and is not of the same type as the current permission. </exception>
        // Token: 0x0600252F RID: 9519 RVA: 0x0008766C File Offset: 0x0008586C
        public override bool IsSubsetOf(IPermission target)
        {
            if (target == null)
            {
                return(this.m_userQuota == 0L && this.m_machineQuota == 0L && this.m_expirationDays == 0L && !this.m_permanentData && this.m_allowed == IsolatedStorageContainment.None);
            }
            bool result;

            try
            {
                IsolatedStorageFilePermission isolatedStorageFilePermission = (IsolatedStorageFilePermission)target;
                if (isolatedStorageFilePermission.IsUnrestricted())
                {
                    result = true;
                }
                else
                {
                    result = (isolatedStorageFilePermission.m_userQuota >= this.m_userQuota && isolatedStorageFilePermission.m_machineQuota >= this.m_machineQuota && isolatedStorageFilePermission.m_expirationDays >= this.m_expirationDays && (isolatedStorageFilePermission.m_permanentData || !this.m_permanentData) && isolatedStorageFilePermission.m_allowed >= this.m_allowed);
                }
            }
            catch (InvalidCastException)
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", new object[]
                {
                    base.GetType().FullName
                }));
            }
            return(result);
        }
예제 #8
0
        /// <summary>Creates a permission that is the union of the current permission and the specified permission.</summary>
        /// <param name="target">A permission to combine with the current permission. It must be of the same type as the current permission. </param>
        /// <returns>A new permission that represents the union of the current permission and the specified permission.</returns>
        /// <exception cref="T:System.ArgumentException">The <paramref name="target" /> parameter is not <see langword="null" /> and is not of the same type as the current permission. </exception>
        // Token: 0x0600252E RID: 9518 RVA: 0x0008758C File Offset: 0x0008578C
        public override IPermission Union(IPermission target)
        {
            if (target == null)
            {
                return(this.Copy());
            }
            if (!base.VerifyType(target))
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", new object[]
                {
                    base.GetType().FullName
                }));
            }
            IsolatedStorageFilePermission isolatedStorageFilePermission = (IsolatedStorageFilePermission)target;

            if (base.IsUnrestricted() || isolatedStorageFilePermission.IsUnrestricted())
            {
                return(new IsolatedStorageFilePermission(PermissionState.Unrestricted));
            }
            return(new IsolatedStorageFilePermission(PermissionState.None)
            {
                m_userQuota = IsolatedStoragePermission.max(this.m_userQuota, isolatedStorageFilePermission.m_userQuota),
                m_machineQuota = IsolatedStoragePermission.max(this.m_machineQuota, isolatedStorageFilePermission.m_machineQuota),
                m_expirationDays = IsolatedStoragePermission.max(this.m_expirationDays, isolatedStorageFilePermission.m_expirationDays),
                m_permanentData = (this.m_permanentData || isolatedStorageFilePermission.m_permanentData),
                m_allowed = (IsolatedStorageContainment)IsolatedStoragePermission.max((long)this.m_allowed, (long)isolatedStorageFilePermission.m_allowed)
            });
        }
예제 #9
0
        /// <summary>Determines whether the current permission is a subset of the specified permission.</summary>
        /// <returns>true if the current permission is a subset of the specified permission; otherwise, false.</returns>
        /// <param name="target">A permission that is to be tested for the subset relationship. This permission must be of the same type as the current permission. </param>
        /// <exception cref="T:System.ArgumentException">The <paramref name="target" /> parameter is not null and is not of the same type as the current permission. </exception>
        public override bool IsSubsetOf(IPermission target)
        {
            IsolatedStorageFilePermission isolatedStorageFilePermission = this.Cast(target);

            if (isolatedStorageFilePermission == null)
            {
                return(base.IsEmpty());
            }
            return(isolatedStorageFilePermission.IsUnrestricted() || (this.m_userQuota <= isolatedStorageFilePermission.m_userQuota && this.m_machineQuota <= isolatedStorageFilePermission.m_machineQuota && this.m_expirationDays <= isolatedStorageFilePermission.m_expirationDays && this.m_permanentData == isolatedStorageFilePermission.m_permanentData && this.m_allowed <= isolatedStorageFilePermission.m_allowed));
        }
예제 #10
0
        public override IPermission Intersect(IPermission target)
        {
            if (target == null)
            {
                return(null);
            }
            else if (!VerifyType(target))
            {
                throw new
                      ArgumentException(
                          Environment.GetResourceString("Argument_WrongType", this.GetType().FullName)
                          );
            }

            IsolatedStorageFilePermission operand = (IsolatedStorageFilePermission)target;

            if (operand.IsUnrestricted())
            {
                return(Copy());
            }
            else if (IsUnrestricted())
            {
                return(target.Copy());
            }

            IsolatedStorageFilePermission intersection;

            intersection                  = new IsolatedStorageFilePermission(PermissionState.None);
            intersection.m_userQuota      = min(m_userQuota, operand.m_userQuota);
            intersection.m_machineQuota   = min(m_machineQuota, operand.m_machineQuota);
            intersection.m_expirationDays = min(m_expirationDays, operand.m_expirationDays);
            intersection.m_permanentData  = m_permanentData && operand.m_permanentData;
            intersection.m_allowed        = (IsolatedStorageContainment)min((long)m_allowed, (long)operand.m_allowed);

            if ((intersection.m_userQuota == 0) &&
                (intersection.m_machineQuota == 0) &&
                (intersection.m_expirationDays == 0) &&
                (intersection.m_permanentData == false) &&
                (intersection.m_allowed == IsolatedStorageContainment.None))
            {
                return(null);
            }

            return(intersection);
        }
예제 #11
0
        public override bool IsSubsetOf(IPermission target)
        {
            bool flag;

            if (target == null)
            {
                return((((base.m_userQuota == 0L) && (base.m_machineQuota == 0L)) && ((base.m_expirationDays == 0L) && !base.m_permanentData)) && (base.m_allowed == IsolatedStorageContainment.None));
            }
            try
            {
                IsolatedStorageFilePermission permission = (IsolatedStorageFilePermission)target;
                if (permission.IsUnrestricted())
                {
                    return(true);
                }
                flag = ((((permission.m_userQuota >= base.m_userQuota) && (permission.m_machineQuota >= base.m_machineQuota)) && (permission.m_expirationDays >= base.m_expirationDays)) && (permission.m_permanentData || !base.m_permanentData)) && (permission.m_allowed >= base.m_allowed);
            }
            catch (InvalidCastException)
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", new object[] { base.GetType().FullName }));
            }
            return(flag);
        }
예제 #12
0
 /// <summary>确定当前权限是否为指定权限的子集。</summary>
 /// <returns>如果当前权限是指定权限的子集,则为 true;否则为 false。</returns>
 /// <param name="target">将要测试子集关系的权限。此权限必须与当前权限属于同一类型。</param>
 /// <exception cref="T:System.ArgumentException">
 /// <paramref name="target" /> 参数不是 null,而且与当前权限不是同一类型。</exception>
 public override bool IsSubsetOf(IPermission target)
 {
     if (target == null)
     {
         if (this.m_userQuota == 0L && this.m_machineQuota == 0L && (this.m_expirationDays == 0L && !this.m_permanentData))
         {
             return(this.m_allowed == IsolatedStorageContainment.None);
         }
         return(false);
     }
     try
     {
         IsolatedStorageFilePermission storageFilePermission = (IsolatedStorageFilePermission)target;
         if (storageFilePermission.IsUnrestricted())
         {
             return(true);
         }
         return(storageFilePermission.m_userQuota >= this.m_userQuota && storageFilePermission.m_machineQuota >= this.m_machineQuota && storageFilePermission.m_expirationDays >= this.m_expirationDays && (storageFilePermission.m_permanentData || !this.m_permanentData) && storageFilePermission.m_allowed >= this.m_allowed);
     }
     catch (InvalidCastException ex)
     {
         throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", (object)this.GetType().FullName));
     }
 }