System.Net.WebPermission.Intersect C# (CSharp) Method

Intersect() public method

public Intersect ( IPermission target ) : IPermission
target IPermission
return IPermission
        public override IPermission Intersect(IPermission target) {
            // Pattern suggested by Security engine
            if (target == null) {
                return null;
            }

            WebPermission other = target as WebPermission;
            if(other == null) {
                throw new ArgumentException(SR.GetString(SR.net_perm_target), "target");
            }

            if (m_noRestriction)
            {
                return other.Copy();
            }
            if (other.m_noRestriction)
            {
                return Copy();
            }

            WebPermission result = new WebPermission();

            if (m_UnrestrictedConnect && other.m_UnrestrictedConnect)
            {
                result.m_UnrestrictedConnect = true;
            }
            else if (m_UnrestrictedConnect || other.m_UnrestrictedConnect)
            {
                result.m_connectList = (ArrayList) (m_UnrestrictedConnect ? other : this).m_connectList.Clone();
            }
            else
            {
                intersectList(m_connectList, other.m_connectList, result.m_connectList);
            }

            if (m_UnrestrictedAccept && other.m_UnrestrictedAccept)
            {
                result.m_UnrestrictedAccept = true;
            }
            else if (m_UnrestrictedAccept || other.m_UnrestrictedAccept)
            {
                result.m_acceptList = (ArrayList) (m_UnrestrictedAccept ? other : this).m_acceptList.Clone();
            }
            else
            {
                intersectList(m_acceptList, other.m_acceptList, result.m_acceptList);
            }

            // return null if resulting permission is restricted and empty
            if (!result.m_UnrestrictedConnect && !result.m_UnrestrictedAccept &&
                result.m_connectList.Count == 0 && result.m_acceptList.Count == 0) {
                return null;
            }
            return result;
        }