CodeAccessPermission.Intersect(IPermission) Método

Definição

Quando implementada por uma classe derivada, cria e retorna uma permissão que é a interseção de permissão atual e da permissão especificada.When implemented by a derived class, creates and returns a permission that is the intersection of the current permission and the specified permission.

public:
 abstract System::Security::IPermission ^ Intersect(System::Security::IPermission ^ target);
public abstract System.Security.IPermission Intersect (System.Security.IPermission target);
abstract member Intersect : System.Security.IPermission -> System.Security.IPermission
Public MustOverride Function Intersect (target As IPermission) As IPermission

Parâmetros

target
IPermission

Uma permissão para ter interseção com a permissão atual.A permission to intersect with the current permission. Ele deve ser do mesmo tipo da permissão atual.It must be of the same type as the current permission.

Retornos

IPermission

Uma nova permissão que representa a interseção da permissão atual e da permissão especificada.A new permission that represents the intersection of the current permission and the specified permission. Essa nova permissão é null se a interseção estiver vazia.This new permission is null if the intersection is empty.

Implementações

Exceções

O parâmetro target não é null e não é uma instância da mesma classe que a permissão atual.The target parameter is not null and is not an instance of the same class as the current permission.

Exemplos

O exemplo de código a seguir mostra uma substituição do Intersect método.The following code example shows an override of the Intersect method. Este exemplo de código faz parte de um exemplo maior fornecido para a CodeAccessPermission classe.This code example is part of a larger example provided for the CodeAccessPermission class.

public:
   virtual IPermission^ Intersect( IPermission^ target ) override
   {
      Console::WriteLine( "************* Entering Intersect *********************" );
      if ( target == nullptr )
      {
         return nullptr;
      }

#if ( debug ) 
      Console::WriteLine( "This is = {0}", ((NameIdPermission)this).Name );
      Console::WriteLine( "Target is {0}", ((NameIdPermission)target).m_Name );
#endif 

      if (  !VerifyType( target ) )
      {
         throw gcnew ArgumentException( String::Format( "Argument is wrong type.", this->GetType()->FullName ) );
      }

      NameIdPermission^ operand = dynamic_cast<NameIdPermission^>(target);

      if ( operand->IsSubsetOf( this ) )
      {
         return operand->Copy();
      }
      else if ( this->IsSubsetOf( operand ) )
      {
         return this->Copy();
      }
      else
      {
         return nullptr;
      }
   }
        public override IPermission Intersect(IPermission target)
        {
            Console.WriteLine ("************* Entering Intersect *********************");
            if (target == null)
            {
                return null;
            }
#if(debug)
            Console.WriteLine ("This is = " + (( NameIdPermission)this).Name);
            Console.WriteLine ("Target is " + (( NameIdPermission)target).m_Name);
#endif
            if (!VerifyType(target))
            {
                throw new ArgumentException (String.Format ("Argument is wrong type.", this.GetType ().FullName));
            }

             NameIdPermission operand = ( NameIdPermission)target;

            if (operand.IsSubsetOf (this)) return operand.Copy ();
            else if (this.IsSubsetOf (operand)) return this.Copy ();
            else
                return null;
        }
        Public Overrides Function Intersect(ByVal target As IPermission) As IPermission
            Console.WriteLine("************* Entering Intersect *********************")
            If target Is Nothing Then
                Return Nothing
            End If
#If (Debug) Then

            Console.WriteLine(("This is = " + CType(Me, NameIdPermission).Name))
            Console.WriteLine(("Target is " + CType(target, NameIdPermission).m_name))
#End If
            If Not VerifyType(target) Then
                Throw New ArgumentException(String.Format("Argument is wrong type.", Me.GetType().FullName))
            End If

            Dim operand As NameIdPermission = CType(target, NameIdPermission)

            If operand.IsSubsetOf(Me) Then
                Return operand.Copy()
            ElseIf Me.IsSubsetOf(operand) Then
                Return Me.Copy()
            Else
                Return Nothing
            End If
        End Function 'Intersect

Comentários

A interseção de duas permissões é uma permissão que descreve o conjunto de operações que ambos descrevem em comum.The intersection of two permissions is a permission that describes the set of operations they both describe in common. Somente uma demanda que passa as duas permissões originais passará a interseção.Only a demand that passes both original permissions will pass the intersection.

Notas aos Implementadores

Você deve substituir esse método em uma classe derivada.You must override this method in a derived class.

Aplica-se a