Union Method
Collapse the table of content
Expand the table of content

SocketPermission.Union Method

Returns the logical union between two SocketPermission instances.

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

'Declaration
Public Overrides Function Union ( _
	target As IPermission _
) As IPermission
'Usage
Dim instance As SocketPermission 
Dim target As IPermission 
Dim returnValue As IPermission 

returnValue = instance.Union(target)

Parameters

target
Type: System.Security.IPermission

The SocketPermission instance to combine with the current instance.

Return Value

Type: System.Security.IPermission
The SocketPermission instance that represents the union of two SocketPermission instances. If target parameter is Nothing, it returns a copy of the current instance.

Implements

IPermission.Union(IPermission)

ExceptionCondition
ArgumentException

target is not a SocketPermission.

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.

The following example uses the Union method to return the logical union of two existing SocketPermission instances.

' 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
// 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());
    }      

}

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

Community Additions

ADD
Show:
© 2016 Microsoft