Freigeben über


SecurityPermission.IsSubsetOf-Methode

Bestimmt, ob die aktuelle Berechtigung eine Teilmenge der angegebenen Berechtigung ist.

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

Syntax

'Declaration
Public Overrides Function IsSubsetOf ( _
    target As IPermission _
) As Boolean
'Usage
Dim instance As SecurityPermission
Dim target As IPermission
Dim returnValue As Boolean

returnValue = instance.IsSubsetOf(target)
public override bool IsSubsetOf (
    IPermission target
)
public:
virtual bool IsSubsetOf (
    IPermission^ target
) override
public boolean IsSubsetOf (
    IPermission target
)
public override function IsSubsetOf (
    target : IPermission
) : boolean

Parameter

  • target
    Eine Berechtigung, für die geprüft werden soll, ob sie eine Teilmenge einer anderen Berechtigung ist. Diese Berechtigung muss von demselben Typ wie die aktuelle Berechtigung sein.

Rückgabewert

true, wenn die aktuelle Berechtigung eine Teilmenge der angegebenen Berechtigung darstellt, andernfalls false.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

Der target-Parameter ist nicht NULL (Nothing in Visual Basic) und gehört nicht zum gleichen Typ wie die aktuelle Berechtigung.

Hinweise

Die aktuelle Berechtigung ist eine Teilmenge der angegebenen Berechtigung, wenn die aktuelle Berechtigung eine Gruppe von Operationen angibt, die vollständig in der angegebenen Berechtigung enthalten ist. Beispielsweise ist eine Berechtigung, die den Zugriff auf C:\beispiel.txt darstellt, eine Teilmenge einer Berechtigung, die den Zugriff auf C:\ darstellt. Wenn diese Methode true zurückgibt, stellt die aktuelle Berechtigung keine weitergehenden Zugriffsrechte für die geschützte Ressource dar als die angegebene Berechtigung.

Beispiel

Im folgenden Codebeispiel soll das Verhalten der IsSubsetOf-Methode veranschaulicht werden, auf ihre Verwendung wird jedoch nicht eingegangen. Im Allgemeinen werden die Methoden von Berechtigungsklassen durch die Sicherheitsinfrastruktur verwendet und sind nicht für die Verwendung in Anwendungen bestimmt. Im folgenden Codebeispiel wird jedoch veranschaulicht, wie sich die Methode verhält, wenn sie vom Code aus ausgeführt wird. Den vollständigen Beispielcode finden Sie in der SecurityPermission-Klasse.

    Private Function IsSubsetOfDemo() As Boolean
        Dim returnValue As Boolean = True
        Dim Security1, Security2 As SecurityPermissionFlag
        Dim SecurityPerm1, SecurityPerm2 As SecurityPermission
        Dim SecurityGen1 As New SecurityGenerator()
        Dim SecurityGen2 As New SecurityGenerator()
        SecurityGen1.ResetIndex()
        While SecurityGen1.GetSecurityFlag(Security1)
            SecurityPerm1 = New SecurityPermission(Security1)
            SecurityGen2.ResetIndex()
            Console.WriteLine("********************************************************" & ControlChars.Lf)

            While SecurityGen2.GetSecurityFlag(Security2)
                SecurityPerm2 = New SecurityPermission(Security2)
                Try
                    If SecurityPerm1.IsSubsetOf(SecurityPerm2) Then
                        Console.WriteLine((SecurityPerm1.Flags.ToString().ToString() _
                        & " is a subset of " & SecurityPerm2.Flags.ToString()))
                    Else
                        Console.WriteLine((SecurityPerm1.Flags.ToString() & " is not a subset of " _
                        & SecurityPerm2.Flags.ToString()))
                    End If
                Catch e As Exception
                    Console.WriteLine(("An exception was thrown for subset :" & SecurityPerm1.ToString() _
                    & ControlChars.Lf & SecurityPerm2.ToString() & ControlChars.Lf & e.ToString()))
                    returnValue = False
                End Try
ContinueWhile2:
            End While
ContinueWhile1:
        End While
        Return returnValue
    End Function 'IsSubsetOfDemo
private bool IsSubsetOfDemo()
{
    bool returnValue = true;
    SecurityPermissionFlag security1,security2;
    SecurityPermission securityPerm1,securityPerm2;
    SecurityGenerator SecurityGen1 = new SecurityGenerator();
    SecurityGenerator SecurityGen2 = new SecurityGenerator();
    SecurityGen1.ResetIndex();
    while(SecurityGen1.GetSecurityFlag( out security1 ))
    {
        securityPerm1 = new SecurityPermission(security1);
        SecurityGen2.ResetIndex();
        Console.WriteLine("********************************************************\n");

        while(SecurityGen2.GetSecurityFlag( out security2 ))
        {
            securityPerm2 = new SecurityPermission(security2);
            try
            {
                if (securityPerm1.IsSubsetOf(securityPerm2))
                {
                    Console.WriteLine(securityPerm1.Flags + " is a subset of " +
                        securityPerm2.Flags);
                }
                else
                {
                    Console.WriteLine(securityPerm1.Flags + " is not a subset of " +
                        securityPerm2.Flags);
                }
            }
            catch(Exception e)
            {
                Console.WriteLine("An exception was thrown for subset :" + securityPerm1 + "\n" +
                    securityPerm2 +"\n" + e);
                returnValue=false;
            }
        }
    }
    return returnValue;
}
bool IsSubsetOfDemo()
{
   bool returnValue = true;
   SecurityPermissionFlag security1;
   SecurityPermissionFlag security2;
   SecurityPermission^ securityPerm1;
   SecurityPermission^ securityPerm2;
   SecurityGenerator^ SecurityGen1 = gcnew SecurityGenerator;
   SecurityGenerator^ SecurityGen2 = gcnew SecurityGenerator;
   SecurityGen1->ResetIndex();
   while ( SecurityGen1->GetSecurityFlag( &security1 ) )
   {
      securityPerm1 = gcnew SecurityPermission(security1);

      SecurityGen2->ResetIndex();
      Console::WriteLine( "********************************************************\n" );
      while ( SecurityGen2->GetSecurityFlag( &security2 ) )
      {
         securityPerm2 = gcnew SecurityPermission(security2);
         try
         {
            if ( securityPerm1->IsSubsetOf( securityPerm2 ) )
            {
               Console::WriteLine( "{0} is a subset of {1}", securityPerm1->Flags, securityPerm2->Flags );
            }
            else
            {
               Console::WriteLine( "{0} is not a subset of {1}", securityPerm1->Flags, securityPerm2->Flags );
            }
         }
         catch ( Exception^ e ) 
         {
            Console::WriteLine( "An exception was thrown for subset :{0}\n{1}\n{2}", securityPerm1, securityPerm2, e );
            returnValue = false;
         }

      }
   }

   return returnValue;
}

private boolean IsSubsetOfDemo() 
{
    boolean returnValue = true;
    SecurityPermissionFlag security1[] = new SecurityPermissionFlag[1];
    SecurityPermissionFlag security2[] = new SecurityPermissionFlag[1];
    SecurityPermission securityPerm1[] = new SecurityPermission[1];
    SecurityPermission securityPerm2[] = new SecurityPermission[1];
    SecurityGenerator securityGen1 = new SecurityGenerator();
    SecurityGenerator securityGen2 = new SecurityGenerator();
    securityGen1.ResetIndex();
    
    while (securityGen1.CreateSecurity(securityPerm1, security1)) {
        if (securityPerm1[0] == null) {
            continue ;
        }
        securityGen2.ResetIndex();
        Console.WriteLine("****************************" 
            + "****************************\n");
        
        while (securityGen2.CreateSecurity(securityPerm2, security2)) {
            if (securityPerm2[0] == null) {
                continue ;
            }
            try {
                if (securityPerm1[0].IsSubsetOf(securityPerm2[0])) {
                    Console.WriteLine((securityPerm1[0].get_Flags() 
                        + " is a subset of " 
                        + securityPerm2[0].get_Flags()));
                }
                else {
                    Console.WriteLine((securityPerm1[0].get_Flags() 
                        + " is not a subset of " 
                        + securityPerm2[0].get_Flags()));
                }
            }
            catch(System.Exception e) { 
                Console.WriteLine(("An exception was " 
                    + "thrown for subset :" + securityPerm1[0] 
                    + "\n" + securityPerm2[0] + "\n" + e));
                returnValue = false;
            }
        }
    }
    return returnValue ;
} //IsSubsetOfDemo

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

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