Udostępnij za pośrednictwem


CodeAccessPermission.Union(IPermission) Metoda

Definicja

Po zastąpieniu w klasie pochodnej tworzy uprawnienie, które jest połączeniem bieżącego uprawnienia i określonego uprawnienia.

public:
 virtual System::Security::IPermission ^ Union(System::Security::IPermission ^ other);
public virtual System.Security.IPermission Union (System.Security.IPermission other);
abstract member Union : System.Security.IPermission -> System.Security.IPermission
override this.Union : System.Security.IPermission -> System.Security.IPermission
Public Overridable Function Union (other As IPermission) As IPermission

Parametry

other
IPermission

Uprawnienie do łączenia z bieżącym uprawnieniem. Musi być tego samego typu co bieżące uprawnienie.

Zwraca

Nowe uprawnienie reprezentujące związek bieżącego uprawnienia i określone uprawnienie.

Implementuje

Wyjątki

Parametr other nie nullma wartości . Ta metoda jest obsługiwana tylko na tym poziomie po przekazaniu nullmetody .

Przykłady

Poniższy przykład kodu przedstawia zastąpienie Union metody . Ten przykład kodu jest częścią większego przykładu udostępnionego CodeAccessPermission dla klasy .

public:
   virtual IPermission^ Union( IPermission^ target ) override
   {
#if ( debug ) 
      Console::WriteLine( "************* Entering Union *********************" );
#endif 

      if ( target == nullptr )
      {
         return this;
      }

#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_WrongType", this->GetType()->FullName ) );
      }

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

      if ( operand->IsSubsetOf( this ) )
      {
         return this->Copy();
      }
      else if ( this->IsSubsetOf( operand ) )
      {
         return operand->Copy();
      }
      else
      {
         return nullptr;
      }
   }
        public override IPermission Union(IPermission target)
        {
#if(debug)
            Console.WriteLine ("************* Entering Union *********************");
#endif
            if (target == null)
            {
                return this;
            }
#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_WrongType", this.GetType ().FullName));
            }

             NameIdPermission operand = ( NameIdPermission)target;

            if (operand.IsSubsetOf (this)) return this.Copy ();
            else if (this.IsSubsetOf (operand)) return operand.Copy ();
            else
                return null;
        }
        Public Overrides Function Union(ByVal target As IPermission) As IPermission
#If (Debug) Then

            Console.WriteLine("************* Entering Union *********************")
#End If
            If target Is Nothing Then
                Return Me
            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_WrongType", Me.GetType().FullName))
            End If

            Dim operand As NameIdPermission = CType(target, NameIdPermission)

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

Uwagi

Wynikiem wywołania metody Union jest uprawnienie, które reprezentuje wszystkie operacje reprezentowane zarówno przez bieżące uprawnienie, jak i określone uprawnienie. Każde żądanie, które przekazuje dowolne uprawnienie przechodzi ich związek.

Uwagi dotyczące dziedziczenia

Tę metodę należy zastąpić w klasie pochodnej. Jeśli wartość other parametru to null, należy zwrócić kopię uprawnienia .

Dotyczy