This documentation is archived and is not being maintained.

SocketPermission.IsSubsetOf Method

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

Namespace:  System.Net
Assembly:  System (in System.dll)

public override function IsSubsetOf(
	target : IPermission
) : boolean


Type: System.Security.IPermission

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

Return Value

Type: System.Boolean
If target is a null reference (Nothing in Visual Basic), this method returns true if the current instance defines no permissions; otherwise, false. If target is not a null reference (Nothing in Visual Basic), this method returns true if the current instance defines a subset of target permissions; otherwise, false.




target is not a SocketException.


DnsPermission is not granted to the method caller.

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 is a subset of a permission that represents access to If this method returns true, the current permission represents no more access to the protected resource than does the specified permission.

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

No code example is currently available or this language may not be supported.
// 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
mySocketPermission1->AddPermission(NetworkAccess::Accept, TransportType::Tcp, "", 11000);

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

// Creates a SocketPermission from the union of two SocketPermissions.
SocketPermission *mySocketPermissionUnion = 
    __try_cast<SocketPermission *>(mySocketPermission1->Union(mySocketPermission2));

// Checks to see if the union was successfully created by using the IsSubsetOf method.
if (mySocketPermission1->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(__try_cast<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(__try_cast<EndpointPermission *>(myEnumerator->Current)->ToString());


Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0