This documentation is archived and is not being maintained.

SocketPermission.Union Method

Returns the logical union between two SocketPermission instances.

[Visual Basic]
Overrides Public Function Union( _
   ByVal target As IPermission _
) As IPermission Implements IPermission.Union
[C#]
public override IPermission Union(
 IPermission target
);
[C++]
public: IPermission* Union(
 IPermission* target
);
[JScript]
public override function Union(
   target : IPermission
) : IPermission;

Parameters

target
The SocketPermission instance to combine with the current instance.

Return Value

The SocketPermission instance that represents the union of two SocketPermission instances. If target parameter is a null reference (Nothing in Visual Basic), it returns a copy of the current instance.

Implements

IPermission.Union

Exceptions

Exception Type Condition
ArgumentException target is not a SocketPermission.

Remarks

The result of a call to Union is a permission that represents all of the access to Socket connections represented by the current instance as well as the access represented by target. Any demand that passes either the current instance or target passes their union. This method overrides Union and is implemented to support the IPermission interface.

Example

[Visual Basic, C#, C++] The following example uses the Union method to return the logical union of two existing SocketPermission instances.

[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 Language Filter 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

Show: