コード例 #1
0
        public override IPermission Intersect(IPermission target)
        {
            EnvironmentPermission ep = Cast(target);

            if (ep == null)
            {
                return(null);
            }

            if (IsUnrestricted())
            {
                return(ep.Copy());
            }
            if (ep.IsUnrestricted())
            {
                return(Copy());
            }

            int n = 0;
            EnvironmentPermission result = new EnvironmentPermission(PermissionState.None);
            string readTarget            = ep.GetPathList(EnvironmentPermissionAccess.Read);

            if (readTarget != null)
            {
                string[] targets = readTarget.Split(';');
                foreach (string t in targets)
                {
                    if (readList.Contains(t))
                    {
                        result.AddPathList(EnvironmentPermissionAccess.Read, t);
                        n++;
                    }
                }
            }

            string writeTarget = ep.GetPathList(EnvironmentPermissionAccess.Write);

            if (writeTarget != null)
            {
                string[] targets = writeTarget.Split(';');
                foreach (string t in targets)
                {
                    if (writeList.Contains(t))
                    {
                        result.AddPathList(EnvironmentPermissionAccess.Write, t);
                        n++;
                    }
                }
            }
            return((n > 0) ? result : null);
        }