IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Test de Flag


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2010
    Messages : 125
    Par défaut Test de Flag
    Bonjour à tous,
    Je voudrais tester les membres des flags InheritanceFlags et PropagationFlags qui appartiennent à la classe AccessControl.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (rule.InheritanceFlags == None && rule.PropagationFlags == None)
    {
         lvi.SubItems.Add("Ce dossier seulement");
    }
    ...
    La procédure est correcte ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    salut,
    si tu poses la question, je suppose que non ^^

    passe la souris au-dessus de ton InheritanceFlags pour en connaitre le Type (un Enum je suppose) ensuite, une valeur Enum se compare à une autre valeur Enum (ou int ou string si tu connais leur correspondance)
    un "None" tout court n'est pas connu par visual studio : MonEnum.None (MonEnum étant le type) doit par contre exister.

    personnellement je ne connais pas ce type alors je te laisse chercher...

    ++

  3. #3
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut.

    La syntaxe correcte est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (rule.InheritanceFlags == InheritanceFlags.None && rule.PropagationFlags == InheritanceFlags.None)
    Tu peux refaire un tour par là si tu veux en savoir en peu plus

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2010
    Messages : 125
    Par défaut
    C'est étrange, certains répertoire ne retourne rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    if (rule.InheritanceFlags == InheritanceFlags.None && rule.PropagationFlags == PropagationFlags.None)
    {
          lvi.SubItems.Add("Ce dossier seulement"); // This Folder only
    }
    else if (rule.InheritanceFlags == InheritanceFlags.None && rule.PropagationFlags == PropagationFlags.NoPropagateInherit)
    {
          lvi.SubItems.Add("Ce dossier seulement"); // This Folder only
    }
    else if (rule.InheritanceFlags == InheritanceFlags.ContainerInherit || rule.InheritanceFlags == InheritanceFlags.ObjectInherit && rule.PropagationFlags == PropagationFlags.None)
    {
          lvi.SubItems.Add("Ce dossier, les sous-dossiers et les fichiers"); // This Folder, Subfolders and Files
    }
    else if (rule.InheritanceFlags == InheritanceFlags.ContainerInherit || rule.InheritanceFlags == InheritanceFlags.ObjectInherit && rule.PropagationFlags == PropagationFlags.NoPropagateInherit)
    {
          lvi.SubItems.Add("Ce dossier, les sous-dossiers et les fichiers"); // This Folder, Subfolders and Files
    }
    else if (rule.InheritanceFlags == InheritanceFlags.ContainerInherit && rule.PropagationFlags == PropagationFlags.None)
    {
          lvi.SubItems.Add("Ce dossier et les sous-dossiers"); // This Folder and Subfolders
    }
    else if (rule.InheritanceFlags == InheritanceFlags.ObjectInherit && rule.PropagationFlags == PropagationFlags.None)
    {
          lvi.SubItems.Add("Ce dossier et les fichiers"); // This Folder and Files
    }
    else if (rule.InheritanceFlags == InheritanceFlags.ObjectInherit && rule.PropagationFlags == PropagationFlags.NoPropagateInherit)
    {
          lvi.SubItems.Add("Ce dossier et les fichiers"); // This Folder and Files
    }
    else if (rule.InheritanceFlags == InheritanceFlags.ContainerInherit || rule.InheritanceFlags == InheritanceFlags.ObjectInherit && rule.PropagationFlags == PropagationFlags.InheritOnly)
    {
          lvi.SubItems.Add("Les sous-dossiers et les fichiers seulement"); // Subfolders and Files only
    }
    else if (rule.InheritanceFlags == InheritanceFlags.ContainerInherit && rule.PropagationFlags == PropagationFlags.InheritOnly)
    {
          lvi.SubItems.Add("Les sous-dossiers seulement"); // Subfolders only
    }
    J'ai pourtant appliqué correctement les scénarios d'héritage qu'on retrouve ici : http://msdn.microsoft.com/en-us/libr...gs(VS.85).aspx.
    Je vois pas où est le soucis...

  5. #5
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Bah disons que certains de tes tests... sont bizarres

    Attention, ces enum ont l'attribut [FlagsAttribute], et quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rule.InheritanceFlags == InheritanceFlags.ContainerInherit || rule.InheritanceFlags == InheritanceFlags.ObjectInherit
    Tu ne fais la même chose que cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rule.InheritanceFlags == InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit
    Ce sont des combinaisons de bits, en clair ça donne :

    • InheritanceFlags.None = 0 (soit 00)
    • InheritanceFlags.ContainerInherit = 1 (soit 01)
    • InheritanceFlags.ObjectInherit = 2 (soit 10)
    • InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit = 3 (soit 11)

    Relis bien les scénarios et ça va aller tout seul

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2010
    Messages : 125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rule.InheritanceFlags == InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit && rule.PropagationFlags == PropagationFlags.None
    J'ai une erreur avec l'opérateur " | ":
    Operator '|' cannot be applied to operands of type 'bool' and 'System.Security.AccessControl.InheritanceFlags'.
    En le remplaçant par " || " j'ai le même type d'erreur avec l'opérateur "&&".

    Y'a t-il une méthode plus efficace en utilisant les combinaisons de bit du flag InheritanceFlags ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tests logiques sur les flags : cmp /jna
    Par lylia SI dans le forum Assembleur
    Réponses: 2
    Dernier message: 27/09/2006, 17h42
  2. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 15h38
  3. [XMLRAD] test de nullité
    Par Pm dans le forum XMLRAD
    Réponses: 5
    Dernier message: 29/11/2002, 10h57
  4. Flags ??
    Par foussa dans le forum Assembleur
    Réponses: 21
    Dernier message: 19/10/2002, 18h36
  5. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo