Поделиться через


SocketPermission.IsSubsetOf(IPermission) Метод

Определение

Определяет, является ли текущее разрешение подмножеством указанного разрешения.

public:
 override bool IsSubsetOf(System::Security::IPermission ^ target);
public override bool IsSubsetOf (System.Security.IPermission target);
override this.IsSubsetOf : System.Security.IPermission -> bool
Public Overrides Function IsSubsetOf (target As IPermission) As Boolean

Параметры

target
IPermission

SocketPermission, для которого требуется проверить соотношение подмножеств.

Возвращаемое значение

Если значение параметра target, null этот метод возвращает true, если текущий экземпляр не определяет никаких разрешений, в противном случае — false. Если значение параметра target не равно null, этот метод возвращает true, если текущий экземпляр определяет набор разрешений target, в противном случае — false.

Исключения

target не является объектом типа SocketException.

DnsPermission не предоставлено оператору, вызывающему метод.

Примеры

В следующем примере метод используется для IsSubsetOf определения того, является ли один подмножеством SocketPermission другого.

// Creates a SocketPermission restricting access to and from all URIs.
SocketPermission^ mySocketPermission1 = gcnew 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 = gcnew 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( safe_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( safe_cast<EndpointPermission^>( myEnumerator->Current )->ToString() );
   }
}

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

Комментарии

Текущее разрешение является подмножеством указанного разрешения, если текущее разрешение указывает набор операций, которые вся содержится в указанном разрешении.

Например, разрешение, представляющее доступ к 192.168.1.1:80, является подмножеством разрешения, представляющего доступ к 192.168.1.1:Any. Если этот метод возвращает true, текущее разрешение не представляет больше доступа к защищенному ресурсу, чем указанное разрешение.

Применяется к