Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

CodeAccessPermission.IsSubsetOf méthode (IPermission)

 

Date de publication : novembre 2016

En cas d’implémentation par une classe dérivée, détermine si l’autorisation actuelle est un sous-ensemble de l’autorisation spécifiée.

Espace de noms:   System.Security
Assembly:  mscorlib (dans mscorlib.dll)

public abstract bool IsSubsetOf(
	IPermission target
)

Paramètres

target
Type: System.Security.IPermission

Autorisation qui doit être testée pour la relation de sous-ensemble. Cette autorisation doit être du même type que l’autorisation actuelle.

Valeur de retour

Type: System.Boolean

true si l’autorisation actuelle est un sous-ensemble de l’autorisation spécifiée ; sinon, false.

Exception Condition
ArgumentException

Le paramètre target n’est pas null et n’est pas du même type que l’autorisation actuelle.

L’autorisation en cours est un sous-ensemble de l’autorisation spécifiée si l’autorisation en cours spécifie un ensemble d’opérations qui est entièrement contenu par l’autorisation spécifiée. Par exemple, une autorisation qui représente l’accès à C:\example.txt est un sous-ensemble d’une autorisation qui représente l’accès à C:\. Si cette méthode retourne true, l’autorisation en cours ne représente pas plus d’accès à la ressource protégée que l’autorisation spécifiée.

Les instructions suivantes doivent être true pour tous les remplacements de la IsSubsetOf méthode. X, Y, et Z représentent des objets d’autorisation d’accès code personnalisé qui ne sont pas des références null, U représente une autorisation d’accès de code sans restriction, et N représente une autorisation vide avec un PermissionState de None.

  • X. IsSubsetOf (X) renvoie true.

  • X. IsSubsetOf (Y) retourne la même valeur que Y. IsSubsetOf (X) si et seulement si X et Y représentent le même jeu d’autorisations.

  • If X. IsSubsetOf (Y) et Y. IsSubsetOf (Z) retournent tous deux true, X. IsSubsetOf (Z) renvoie true.

  • X. IsSubsetOf (U) renvoie true.

  • X. IsSubsetOf (N) renvoie false.

  • N. IsSubsetOf (X) renvoie true.

Si X et Y représentent des objets d’autorisation d’accès code personnalisé qui sont des références null, X. IsSubsetOf (Y) renvoie true. Si Z est également null, l’opération ensembliste composée X. Union (Y). IsSubsetOf (Z) retourne également true car l’union de deux autorisations null constitue une autorisation null.

Remarques à l’attention des héritiers :

Vous devez substituer cette méthode dans une classe dérivée.

L’exemple de code suivant illustre une substitution de la IsSubsetOf méthode. Cet exemple de code fait partie d’un exemple plus complet fourni pour la CodeAccessPermission classe.

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

.NET Framework
Disponible depuis 1.1
Retour au début
Afficher: