SocketPermission.IsSubsetOf(IPermission) Method

Definition

Determines if the current permission is a subset of the specified permission.

C#
public override bool IsSubsetOf(System.Security.IPermission target);

Parameters

target
IPermission

A SocketPermission that is to be tested for the subset relationship.

Returns

If target is null, this method returns true if the current instance defines no permissions; otherwise, false. If target is not null, this method returns true if the current instance defines a subset of target permissions; otherwise, false.

Exceptions

DnsPermission is not granted to the method caller.

Examples

The following example uses the IsSubsetOf method to determine if one SocketPermission is the subset of another.

C#

// Creates a SocketPermission restricting access to and from all URIs.
SocketPermission mySocketPermission1 = new SocketPermission(PermissionState.None);

// The socket to which this permission will apply will allow connections from www.contoso.com.
mySocketPermission1.AddPermission(NetworkAccess.Accept, TransportType.Tcp, "www.contoso.com", 11000);

// Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
SocketPermission mySocketPermission2 =
                           new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "www.southridgevideo.com", 11002);

// Creates a SocketPermission from the union of two SocketPermissions.
SocketPermission mySocketPermissionUnion =
                           (SocketPermission)mySocketPermission1.Union(mySocketPermission2);

// Checks to see if the union was successfully created by using the IsSubsetOf method.
if (mySocketPermission1.IsSubsetOf(mySocketPermissionUnion) &&
      mySocketPermission2.IsSubsetOf(mySocketPermissionUnion)){
     Console.WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2");

     // Prints the allowable accept URIs to the console.
     Console.WriteLine("This union accepts connections on :");

     IEnumerator myEnumerator = mySocketPermissionUnion.AcceptList;
  while (myEnumerator.MoveNext()) {
          Console.WriteLine(((EndpointPermission)myEnumerator.Current).ToString());
       }

        // Prints the allowable connect URIs to the console.
     Console.WriteLine("This union permits connections to :");

     myEnumerator = mySocketPermissionUnion.ConnectList;
  while (myEnumerator.MoveNext()) {
          Console.WriteLine(((EndpointPermission)myEnumerator.Current).ToString());
       }
      }

Remarks

The current permission is a subset of the specified permission if the current permission specifies a set of operations that is wholly contained by the specified permission.

For example, a permission that represents access to 192.168.1.1:80 is a subset of a permission that represents access to 192.168.1.1:Any. If this method returns true, the current permission represents no more access to the protected resource than does the specified permission.

Applies to

Product Versions
.NET 8 (package-provided), 9 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 (package-provided), 4.7, 4.7.1 (package-provided), 4.7.1, 4.7.2 (package-provided), 4.7.2, 4.8 (package-provided), 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9