CodeAccessPermission.IsSubsetOf-Methode
Bestimmt bei der Implementierung durch eine abgeleitete Klasse, ob die aktuelle Berechtigung eine Teilmenge der angegebenen Berechtigung ist.
Namespace: System.Security
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public MustOverride Function IsSubsetOf ( _
target As IPermission _
) As Boolean
'Usage
Dim instance As CodeAccessPermission
Dim target As IPermission
Dim returnValue As Boolean
returnValue = instance.IsSubsetOf(target)
public abstract bool IsSubsetOf (
IPermission target
)
public:
virtual bool IsSubsetOf (
IPermission^ target
) abstract
public abstract boolean IsSubsetOf (
IPermission target
)
public abstract 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 ist, andernfalls false.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
Der target-Parameter ist nicht NULL (Nothing in Visual Basic) und nicht von demselben 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.
Die folgenden Anweisungen müssen für alle Überschreibungen der IsSubsetOf-Methode true sein. X, Y und Z stellen benutzerdefinierte Codezugriffsberechtigungs-Objekte dar, die keine NULL-Verweise sind. U stellt eine uneingeschränkte Codezugriffsberechtigung dar, und N stellt eine leere Berechtigung mit dem PermissionStateNone dar.
X.IsSubsetOf(X) gibt true zurück.
X.IsSubsetOf(Y) gibt denselben Wert wie Y.IsSubsetOf(X) dann und nur dann zurück, wenn X und Y denselben Berechtigungssatz darstellen.
Wenn sowohl X.IsSubsetOf(Y) als auch Y.IsSubsetOf(Z) true zurückgeben, gibt X.IsSubsetOf(Z) true zurück.
X.IsSubsetOf(U) gibt true zurück.
X.IsSubsetOf(N) gibt true zurück.
N.IsSubsetOf(X) gibt true zurück.
Wenn X und Y benutzerdefinierte Codezugriffs-Berechtigungsobjekte darstellen, die NULL-Verweise sind, gibt X.IsSubsetOf(Y) true zurück. Wenn Z ebenfalls NULL ist, gibt die Vereinigungsmengenoperation X.Union(Y).IsSubsetOf(Z) auch true zurück, da die Gesamtmenge zweier NULL-Berechtigungen eine NULL-Berechtigung ist.
Hinweise für Erben Sie müssen diese Methode in einer abgeleiteten Klasse überschreiben.
Beispiel
Im folgenden Codebeispiel wird eine Überschreibung der IsSubsetOf-Methode veranschaulicht. Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels für die CodeAccessPermission-Klasse.
Public Overrides Function IsSubsetOf(ByVal target As IPermission) As Boolean
#If (Debug) Then
Console.WriteLine("************* Entering IsSubsetOf *********************")
#End If
If target Is Nothing Then
Console.WriteLine("IsSubsetOf: target == null")
Return False
End If
#If (Debug) Then
Console.WriteLine(("This is = " + CType(Me, NameIdPermission).Name))
Console.WriteLine(("Target is " + CType(target, NameIdPermission).m_name))
#End If
Try
Dim operand As NameIdPermission = CType(target, NameIdPermission)
' The following check for unrestricted permission is only included as an example for
' permissions that allow the unrestricted state. It is of no value for this permission.
If True = operand.m_Unrestricted Then
Return True
ElseIf True = Me.m_Unrestricted Then
Return False
End If
If Not (Me.m_name Is Nothing) Then
If operand.m_name Is Nothing Then
Return False
End If
If Me.m_name = "" Then
Return True
End If
End If
If Me.m_name.Equals(operand.m_name) Then
Return True
Else
' Check for wild card character '*'.
Dim i As Integer = operand.m_name.LastIndexOf("*")
If i > 0 Then
Dim prefix As String = operand.m_name.Substring(0, i)
If Me.m_name.StartsWith(prefix) Then
Return True
End If
End If
End If
Return False
Catch
Throw New ArgumentException(String.Format("Argument_WrongType", Me.GetType().FullName))
End Try
End Function 'IsSubsetOf
public override bool IsSubsetOf(IPermission target)
{
#if(debug)
Console.WriteLine ("************* Entering IsSubsetOf *********************");
#endif
if (target == null)
{
Console.WriteLine ("IsSubsetOf: target == null");
return false;
}
#if(debug)
Console.WriteLine ("This is = " + (( NameIdPermission)this).Name);
Console.WriteLine ("Target is " + (( NameIdPermission)target).m_Name);
#endif
try
{
NameIdPermission operand = ( NameIdPermission)target;
// The following check for unrestricted permission is only included as an example for
// permissions that allow the unrestricted state. It is of no value for this permission.
if (true == operand.m_Unrestricted)
{
return true;
}
else if (true == this.m_Unrestricted)
{
return false;
}
if (this.m_Name != null)
{
if (operand.m_Name == null) return false;
if (this.m_Name == "") return true;
}
if (this.m_Name.Equals (operand.m_Name)) return true;
else
{
// Check for wild card character '*'.
int i = operand.m_Name.LastIndexOf ("*");
if (i > 0)
{
string prefix = operand.m_Name.Substring (0, i);
if (this.m_Name.StartsWith (prefix))
{
return true;
}
}
}
return false;
}
catch (InvalidCastException)
{
throw new ArgumentException (String.Format ("Argument_WrongType", this.GetType ().FullName));
}
}
public:
virtual bool IsSubsetOf( IPermission^ target ) override
{
#if ( debug )
Console::WriteLine( "************* Entering IsSubsetOf *********************" );
#endif
if ( target == nullptr )
{
Console::WriteLine( "IsSubsetOf: target == null" );
return false;
}
#if ( debug )
Console::WriteLine( "This is = {0}", ((NameIdPermission)this).Name );
Console::WriteLine( "Target is {0}", ((NameIdPermission)target).m_Name );
#endif
try
{
NameIdPermission^ operand = dynamic_cast<NameIdPermission^>(target);
// The following check for unrestricted permission is only included as an example for
// permissions that allow the unrestricted state. It is of no value for this permission.
if ( true == operand->m_Unrestricted )
{
return true;
}
else if ( true == this->m_Unrestricted )
{
return false;
}
if ( this->m_Name != nullptr )
{
if ( operand->m_Name == nullptr )
{
return false;
}
if ( this->m_Name->Equals( "" ) )
{
return true;
}
}
if ( this->m_Name->Equals( operand->m_Name ) )
{
return true;
}
else
{
// Check for wild card character '*'.
int i = operand->m_Name->LastIndexOf( "*" );
if ( i > 0 )
{
String^ prefix = operand->m_Name->Substring( 0, i );
if ( this->m_Name->StartsWith( prefix ) )
{
return true;
}
}
}
return false;
}
catch ( InvalidCastException^ )
{
throw gcnew ArgumentException( String::Format( "Argument_WrongType", this->GetType()->FullName ) );
}
}
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