Freigeben über


CodeAccessPermission.Union-Methode

Erstellt beim Überschreiben in einer abgeleiteten Klasse eine Berechtigung, bei der es sich um die Union der aktuellen und der angegebenen Berechtigung handelt.

Namespace: System.Security
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Overridable Function Union ( _
    other As IPermission _
) As IPermission
'Usage
Dim instance As CodeAccessPermission
Dim other As IPermission
Dim returnValue As IPermission

returnValue = instance.Union(other)
public virtual IPermission Union (
    IPermission other
)
public:
virtual IPermission^ Union (
    IPermission^ other
)
public IPermission Union (
    IPermission other
)
public function Union (
    other : IPermission
) : IPermission

Parameter

  • other
    Eine Berechtigung, die mit der aktuellen Berechtigung kombiniert werden soll. Diese muss von demselben Typ wie die aktuelle Berechtigung sein.

Rückgabewert

Eine neue Berechtigung, die die Gesamtmenge der aktuellen und der angegebenen Berechtigung darstellt.

Ausnahmen

Ausnahmetyp Bedingung

NotSupportedException

Der other-Parameter ist nicht NULL (Nothing in Visual Basic). Die Methode wird auf dieser Ebene nur bei der Übergabe von NULL (Nothing in Visual Basic) unterstützt.

Hinweise

Das Ergebnis eines Aufrufs von Union ist eine Berechtigung, die alle Operationen darstellt, die sowohl durch die aktuelle als auch die angegebene Berechtigung dargestellt werden. Anforderungen, die eine der beiden Berechtigungen erfolgreich durchlaufen, durchlaufen auch deren Gesamtmenge erfolgreich.

Hinweise für Erben Sie müssen diese Methode in einer abgeleiteten Klasse überschreiben. Sie sollten eine Kopie der Berechtigung zurückgeben, wenn der Wert des other-Parameters NULL (Nothing in Visual Basic) ist.

Beispiel

Im folgenden Codebeispiel wird eine Überschreibung der Union-Methode veranschaulicht. Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels für die CodeAccessPermission-Klasse.

        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
        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:
   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;
      }
   }

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

CodeAccessPermission-Klasse
CodeAccessPermission-Member
System.Security-Namespace