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); }
/// <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); }