SocketPermission.IsSubsetOf Method
Determines if the current permission is a subset of the specified permission.
[Visual Basic] Overrides Public Function IsSubsetOf( _ ByVal target As IPermission _ ) As Boolean Implements IPermission.IsSubsetOf [C#] public override bool IsSubsetOf( IPermission target ); [C++] public: bool IsSubsetOf( IPermission* target ); [JScript] public override function IsSubsetOf( target : IPermission ) : Boolean;
Parameters
- target
- A SocketPermission that is to be tested for the subset relationship.
Return Value
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), this method returns true if the current instance defines a subset of target permissions; otherwise, false.
Implements
Exceptions
| Exception Type | Condition |
|---|---|
| ArgumentException | target is not a SocketException. |
| SecurityException | DnsPermission is not granted to the method caller. |
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.
Example
[Visual Basic, C#, C++] The following example uses the IsSubsetOf method to determine if one SocketPermission is the subset of another.
[Visual Basic] ' Creates a SocketPermission restricting access to and from all URIs. Dim mySocketPermission1 As 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. Dim mySocketPermission2 As New SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "www.southridgevideo.com", 11002) ' Creates a SocketPermission from the union of two SocketPermissions. Dim mySocketPermissionUnion As SocketPermission = CType(mySocketPermission1.Union(mySocketPermission2), SocketPermission) ' Checks to see if the union was successfully created by using the IsSubsetOf method. If mySocketPermission1.IsSubsetOf(mySocketPermissionUnion) And mySocketPermission2.IsSubsetOf(mySocketPermissionUnion) Then 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 :") Dim myEnumerator As IEnumerator = mySocketPermissionUnion.AcceptList While myEnumerator.MoveNext() Console.WriteLine(CType(myEnumerator.Current, EndpointPermission).ToString()) End While Console.WriteLine("This union establishes connections on : ") ' Prints the allowable connect URIs to the console. Console.WriteLine("This union permits connections to :") myEnumerator = mySocketPermissionUnion.ConnectList While myEnumerator.MoveNext() Console.WriteLine(CType(myEnumerator.Current, EndpointPermission).ToString()) End While End If [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()); } } [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 = __try_cast<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(__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()); } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, Common Language Infrastructure (CLI) Standard
See Also
SocketPermission Class | SocketPermission Members | System.Net Namespace