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

Union() public method

public Union ( IPermission target ) : IPermission
target IPermission
return IPermission
        public override IPermission Union(IPermission target) {
            // Pattern suggested by Security engine
            if (target==null) {
                return this.Copy();
            }
            WebPermission other = target as WebPermission;
            if(other == null) {
                throw new ArgumentException(SR.GetString(SR.net_perm_target), "target");
            }

            if (m_noRestriction || other.m_noRestriction)
            {
                return new WebPermission(true);
            }

            WebPermission result = new WebPermission();

            if (m_UnrestrictedConnect || other.m_UnrestrictedConnect)
            {
                result.m_UnrestrictedConnect = true;
            }
            else
            {
                result.m_connectList = (ArrayList) other.m_connectList.Clone();

                for (int i = 0; i < m_connectList.Count; i++) {
                    DelayedRegex uriPattern = m_connectList[i] as DelayedRegex;
                    if(uriPattern == null)
                        if (m_connectList[i] is string)
                            result.AddPermission(NetworkAccess.Connect, (string)m_connectList[i]);
                        else
                            result.AddPermission(NetworkAccess.Connect, (Uri)m_connectList[i]);
                    else
                        result.AddAsPattern(NetworkAccess.Connect, uriPattern);
                }
            }

            if (m_UnrestrictedAccept || other.m_UnrestrictedAccept)
            {
                result.m_UnrestrictedAccept = true;
            }
            else
            {
                result.m_acceptList = (ArrayList) other.m_acceptList.Clone();

                for (int i = 0; i < m_acceptList.Count; i++) {
                    DelayedRegex uriPattern = m_acceptList[i] as DelayedRegex;
                    if(uriPattern == null)
                        if (m_acceptList[i] is string)
                            result.AddPermission(NetworkAccess.Accept, (string)m_acceptList[i]);
                        else
                            result.AddPermission(NetworkAccess.Accept, (Uri)m_acceptList[i]);
                    else
                        result.AddAsPattern(NetworkAccess.Accept, uriPattern);
                }
            }

            return result;
        }