Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

CodeAccessPermission.IsSubsetOf, méthode

Lors de l'implémentation par une classe dérivée, détermine si l'autorisation en cours 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 en cours.

Valeur de retour

Type : System.Boolean
true si l'autorisation en cours est un sous-ensemble de l'autorisation spécifiée ; sinon, false.

Implémentations

IPermission.IsSubsetOf(IPermission)

ExceptionCondition
ArgumentException

Le paramètre target n'est pas null et n'est pas du même type que l'autorisation en cours.

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 entièrement contenu dans 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 avoir la valeur true pour toutes les substitutions de la méthode IsSubsetOf. X, Y et Z représentent des objets d'autorisation d'accès au code personnalisée qui ne sont pas des références null ; U représente une autorisation d'accès au code illimitée et N représente une autorisation vide avec un PermissionState de None.

  • X.IsSubsetOf (X) retourne 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.

  • Si X.IsSubsetOf (Y) et Y.IsSubsetOf(Z) retournent tous deux true, X.IsSubsetOf(Z) retourne true.

  • X.IsSubsetOf (U) retourne true.

  • X.IsSubsetOf (N) retourne false.

  • N.IsSubsetOf (X) retourne true.

Si X et Y représentent des objets d'autorisation d'accès au code personnalisée qui sont des références null, X.IsSubsetOf (Y) retourne true. Si Z est également null, l'opération de définition composée X.Union(Y).IsSubsetOf(Z) retourne également true parce que 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 suivant montre une substitution de la méthode IsSubsetOf. Cet exemple de code fait partie d'un exemple plus complet fourni pour la classe CodeAccessPermission.


        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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft