System.Net.SocketPermission.IsSubsetOf C# (CSharp) Method

IsSubsetOf() public method

public IsSubsetOf ( IPermission target ) : bool
target IPermission
return bool
        public override bool IsSubsetOf(IPermission target) {
            // Pattern suggested by security engine
            if (target == null) {
                return (m_noRestriction == false && m_connectList.Count == 0 && m_acceptList.Count == 0);
            }

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

            if (other.IsUnrestricted()) {
                return true;
            } else if (this.IsUnrestricted()) {
                return false;
            } else if (this.m_acceptList.Count + this.m_connectList.Count ==0) {
                return true;
            } else if (other.m_acceptList.Count + other.m_connectList.Count ==0) {
                return false;
            }

            bool result = false;
            try {
                if (FindSubset(m_connectList, other.m_connectList) &&
                    FindSubset(m_acceptList, other.m_acceptList)) {
                    result = true;
                }
            }
            finally {
                //  This is around a back door into DNS
                //  Security engine will call isSubsetOf and probably have
                //  DNS permission asserted. We call DNS resolve.
                //  Before return do cleanup of DNS results.

                //  Only "this" needs cleanup, the policy object is not available for
                //  an application to look at.
                this.CleanupDNS();
            }

            return result;
        }

Usage Example

        public void IsSubsetOf ()
        {
		s1 = new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "12.13.14.15", 80);
		s1.AddPermission(NetworkAccess.Accept, TransportType.All, "10.11.4.*", SocketPermission.AllPorts);
		s2 = new SocketPermission(NetworkAccess.Connect, TransportType.All, "12.13.14.15", 80);
		s2.AddPermission(NetworkAccess.Accept, TransportType.All, "10.11.*.*", 9090);
		
		Assertion.Assert ("#1", !s1.IsSubsetOf (s2));
		Assertion.Assert ("#2", !s2.IsSubsetOf (s1));

		s1 = new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "12.13.14.15", 80);
		s1.AddPermission(NetworkAccess.Accept, TransportType.All, "10.11.4.*", 9090);
		s2 = new SocketPermission(NetworkAccess.Connect, TransportType.All, "12.13.14.15", 80);
		s2.AddPermission(NetworkAccess.Accept, TransportType.All, "10.11.*.*", 9090);
		
		Assertion.Assert ("#4", !s2.IsSubsetOf (s1));
		
		s1 = new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "12.13.*.*", 80);
		s2 = new SocketPermission(NetworkAccess.Connect, TransportType.All, "12.13.14.*", 80);
		Assertion.Assert ("#5", s1.IsSubsetOf (s2));
		Assertion.Assert ("#6", !s2.IsSubsetOf (s1));

		s1 = new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "12.13.14.15", 80);
		s1.AddPermission(NetworkAccess.Accept, TransportType.Tcp, "10.11.*.*", 9090);
		s2 = new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "12.13.14.15", 80);
		s2.AddPermission(NetworkAccess.Accept, TransportType.All, "10.11.4.*", SocketPermission.AllPorts);
		Assertion.Assert ("#7", s1.IsSubsetOf (s2));
		Assertion.Assert ("#8", !s2.IsSubsetOf (s1));
	}
All Usage Examples Of System.Net.SocketPermission::IsSubsetOf