Freigeben über


SiteIdentityPermission.Union-Methode

Erstellt eine Berechtigung, die die Gesamtmenge der aktuellen Berechtigung und der angegebenen Berechtigung darstellt.

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

Syntax

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

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

Parameter

  • target
    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 Berechtigung und der angegebenen Berechtigung darstellt.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

Der target-Parameter ist nicht NULL (Nothing in Visual Basic) und nicht von demselben Typ wie die aktuelle Berechtigung.

- oder -

Diese Berechtigungen sind nicht identisch, und eine Berechtigung stellt keine Teilmenge der jeweils anderen dar.

Hinweise

Das Ergebnis eines Aufrufs der Union-Methode ist eine Berechtigung, die alle Sites 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. Die Gesamtmenge einer Berechtigung, die den Zugriff auf www.fourthcoffee.com darstellt, und einer, die den Zugriff auf *.fourthcoffee.com darstellt, ist eine Berechtigung, die den Zugriff auf *.fourthcoffee.com darstellt.

Die Union von einer Berechtigung und NULL (Nothing in Visual Basic) ist die Berechtigung, die nicht NULL (Nothing in Visual Basic) ist. Die Union einer Berechtigung und einer Teilmenge dieser Berechtigung ist die Berechtigung, die die Teilmenge enthält. Jede andere Kombination führt zum Auslösen einer ArgumentException-Ausnahme. Beispielsweise führt die Union der Site-Identität www.fourthcoffee.com und der Site-Identität www.tailspintoys.com zu einer Ausnahme, da keine der beiden eine Teilmenge der jeweils anderen darstellt.

Beispiel

Im folgenden Codebeispiel werden die Ergebnisse der Verwendung der Union-Methode veranschaulicht, jedoch nicht deren Verwendung. Dieser Code ist Teil eines umfangreicheren Beispiels. Sie sollten das gesamte Beispiel erstellen und ausführen und dann die Ausgabe anzeigen. Das vollständige Beispiel finden Sie in der SiteIdentityPermission-Klasse.

    ' Union creates a new permission that is the union of the current permission 
    ' and the specified permission.
    Private Function UnionDemo() As Boolean
        Dim returnCodeCode As Boolean = True
        Dim site1 As [String] = ""
        Dim site2 As [String] = ""
        Dim siteIdPerm1, siteIdPerm2, p3 As SiteIdentityPermission

        Dim siteGen1 As New SiteGenerator()
        Dim siteGen2 As New SiteGenerator()

        siteGen1.ResetIndex()
        While siteGen1.CreateSite(site1)
            siteIdPerm1 = siteGen1.CreatePerm(site1)
            If siteIdPerm1 Is Nothing Then
                GoTo ContinueWhile1
            End If
            siteGen2.ResetIndex()
            Console.WriteLine("**************************************************************************")
            While siteGen2.CreateSite(site2)
                siteIdPerm2 = siteGen2.CreatePerm(site2)
                If siteIdPerm2 Is Nothing Then
                    GoTo ContinueWhile2
                End If
                Dim firstSite As [String] = IIf(site1 Is Nothing, "null", site1)
                Dim secondSite As [String] = IIf(site2 Is Nothing, "null", site2)
                Try
                    p3 = CType(siteIdPerm1.Union(siteIdPerm2), SiteIdentityPermission)
                    Dim thirdSite As [String] = IIf(p3.Site Is Nothing, "null", p3.Site.ToString())

                    If Not (p3 Is Nothing) Then
                        Console.WriteLine(("The union of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = " & ControlChars.Lf & ControlChars.Tab & thirdSite & ControlChars.Lf))

                    Else
                        Console.WriteLine(("The union of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
                    End If
                Catch e As Exception
                    ' Expected exception, result of the union is null.
                    Console.WriteLine((e.Message & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & ControlChars.Lf))
                End Try
ContinueWhile2:
            End While
ContinueWhile1:
        End While



        Return returnCodeCode
    End Function 'UnionDemo
// Union creates a new permission that is the union of the current permission
// and the specified permission.
private bool UnionDemo()
{
    bool returnCodeCode = true;
    String site1, site2;
    SiteIdentityPermission siteIdPerm1, siteIdPerm2, p3;

    SiteGenerator siteGen1 = new SiteGenerator();
    SiteGenerator siteGen2 = new SiteGenerator();

    siteGen1.ResetIndex();
    while (siteGen1.CreateSite(out site1))
    {
        siteIdPerm1 = siteGen1.CreatePerm(site1);
        if (siteIdPerm1 == null ) continue;
        siteGen2.ResetIndex();
        Console.WriteLine("**************************************************************************");
        while (siteGen2.CreateSite(out site2))
        {
            siteIdPerm2 = siteGen2.CreatePerm(site2);
            if (siteIdPerm2 == null ) continue;
            String firstSite = site1 == null ? "null" : site1;
            String secondSite = site2 == null ? "null" : site2;
            try
            {
                p3 = (SiteIdentityPermission)siteIdPerm1.Union(siteIdPerm2);
                String thirdSite = p3.Site == null ? "null" : p3.Site;

                if (p3 != null)
                {
                    Console.WriteLine("The union of " + firstSite + " and \n\t" + secondSite + " = \n\t"
                        + thirdSite + "\n");

                }
                else
                {
                    Console.WriteLine("The union of " + firstSite + " and \n\t" + secondSite + " = null.\n");
                }
            }
            catch (Exception e)
            {
                // Expected exception.
                Console.WriteLine(e.Message + "\n\t" + firstSite + " and " + secondSite + "\n");
            }
        }
    }
    return returnCodeCode;

}
// Union creates a new permission that is the union of the current permission
// and the specified permission.
bool UnionDemo()
{
   bool returnCodeCode = true;
   String^ site1;
   String^ site2;

   SiteIdentityPermission^ siteIdPerm1;
   SiteIdentityPermission^ siteIdPerm2;
   SiteIdentityPermission^ p3;
   SiteGenerator^ siteGen1 = gcnew SiteGenerator;
   SiteGenerator^ siteGen2 = gcnew SiteGenerator;
   siteGen1->ResetIndex();
   while ( siteGen1->CreateSite( &site1 ) )
   {
      siteIdPerm1 = siteGen1->CreatePerm(&site1);
      if ( siteIdPerm1 == nullptr  )
               continue;

      siteGen2->ResetIndex();
      Console::WriteLine( "**************************************************************************" );
      while ( siteGen2->CreateSite( &site2 ) )
      {
         siteIdPerm2 = siteGen2->CreatePerm(&site2);
         if ( siteIdPerm2 == nullptr  )
                     continue;
         String^ firstSite = site1 == nullptr ? "null" : site1;
         String^ secondSite = site2 == nullptr ? "null" : site2;
         try
         {
            p3 = dynamic_cast<SiteIdentityPermission^>(siteIdPerm1->Union( siteIdPerm2 ));
            String^ thirdSite = p3->Site == nullptr ? "null" : p3->Site;
            if ( p3 != nullptr )
            {
               Console::WriteLine( "The union of {0} and \n\t{1} = \n\t{2}\n", firstSite, secondSite, thirdSite );
            }
            else
            {
               Console::WriteLine( "The union of {0} and \n\t{1} = null.\n", firstSite, secondSite );
            }
         }
         catch ( Exception^ ) 
         {
            
            // Expected exception, result of the union is 0.
            Console::WriteLine( "The union of {0} and \n\t{1} = null.\n", firstSite, secondSite );
         }

      }
   }

   return returnCodeCode;
}

 // Union creates a new permission that is the union of the current 
 // permission
 // and the specified permission.
 private boolean UnionDemo() 
 {
     boolean returnCodeCode = true;
     
     String site1[] = new String[1];
     String site2[] = new String[1];
     boolean successFlag[] = new boolean[1];
     SiteIdentityPermission siteIdPerm1[] = new SiteIdentityPermission[1];
     SiteIdentityPermission siteIdPerm2[] = new SiteIdentityPermission[1];
     SiteIdentityPermission p3 = null;
       
     SiteGenerator siteGen1 =  new SiteGenerator();
     SiteGenerator siteGen2 =  new SiteGenerator();
     
     siteGen1.ResetIndex();
     while(siteGen1.CreateSite(siteIdPerm1, site1, successFlag)) {
         if (siteIdPerm1[0] == null | successFlag[0] == false) {
             continue ;
         }

         siteGen2.ResetIndex();
         Console.WriteLine("****************************************" 
             + "**********************************");
         while(siteGen2.CreateSite(siteIdPerm2, site2, successFlag)) {
             if (siteIdPerm2[0] == null | successFlag[0] == false) {
                 continue ;
             }
             String firstSite = (site1[0] == null) ? "null" : site1[0];
             String secondSite = (site2[0] == null) ? "null" : site2[0];
             try {
                 p3 =((SiteIdentityPermission)(
                 siteIdPerm1[0].Union(siteIdPerm2[0])));
                 String thirdSite = (p3.get_Site() == null) ? 
                 "null" : p3.get_Site();
                        
                 if (p3  != null) {
                     Console.WriteLine(("The union of " + firstSite 
                         + " and \n\t" + secondSite + " = \n\t" 
                         + thirdSite + "\n"));
                 }
                 else {
                     Console.WriteLine(("The union of " + firstSite 
                         + " and \n\t" + secondSite + " = null.\n"));
                 }
             }
             catch(Exception exp) {
                 // Expected exception, result of the union is null.
                 Console.WriteLine(("The union of " + firstSite 
                     + " and \n\t" + secondSite + " = null.\n"));
             }
         }
     }
     return returnCodeCode ;
}

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

SiteIdentityPermission-Klasse
SiteIdentityPermission-Member
System.Security.Permissions-Namespace