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 :

Vérifier que ma variable contient bien une valeur de ma structure


Sujet :

C#

  1. #21
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    dans ce cas là l'enum est faite pour ça mais qu'elle est le meilleur moyen pour énuméré des strings ?

  2. #22
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    dans ce cas là l'enum est faite pour ça mais qu'elle est le meilleur moyen pour énuméré des strings ?
    Tu veux dire pour récupérer toutes les valeurs possibles ? Nathanael te l'a indiqué plus haut : Enum.GetNames(typeof(MonEnum))

  3. #23
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Ben l'Enum c fait pour ça, c'est juste qu'il faut utiliser les méthodes static d'Enum pour manipuler sa face "String".

  4. #24
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Tu veux dire pour récupérer toutes les valeurs possibles ? Nathanael te l'a indiqué plus haut : Enum.GetNames(typeof(MonEnum))
    non je parlais pas de cette méthode mais plutôt de ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     public enum TypeCategorie { Secteur="Secteur", Complexe="Complexe" }

  5. #25
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Oui mais on a dit que ca, c'était pas possible! Un enum c'est un entier point final. Qu'est ce que ca change pour toi que derriere ca soit un string, un int ou un guid?

  6. #26
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    je sais très bien que c'est impossible c'est pour ça que je suis partie sur le struct pour pouvoir faire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exploitation test=new Exploitation();
    test.Categorie = Exploitation.TypeCategorie.Complexe;
    finalement je suis partie sur ça (qu'est ce qu'on peut s'emmerder sur des trucs aussi simple):

    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
     
     public class Exploitation : ObjetDomaine
        {
            public enum TypeCategorie { Secteur, Complexe }
            private string _categorie;
            public string Identifiant { get; set; }
            public string Parent_id { get; set; }
            public string Libelle { get; set; }
     
            public string Categorie
            {
                get
                {
                    if (IsTypeCategorie(_categorie))
                        return _categorie;
                    else
                        throw new Exception("La catégorie d'exploitation est incorrecte ou ne contient aucun élément");
                }
                set
                {
                    if (IsTypeCategorie(value))
                        _categorie = value;
                    else
                        throw new Exception("La catégorie d'exploitation est incorrecte: elle doit correspondre a secteur, complexe...");
                }
            }
     
            private bool IsTypeCategorie(string value)
            {
                if (Enum.GetNames(typeof(TypeCategorie)).Contains(value))
                    return true;
                else
                    return false;
            }
     
            public Exploitation() { }
     
        }

  7. #27
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Ah ben la du coup, t'as loupé le message de tomlev:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsTypeCategorie(_categorie)
    peut se remplacer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Enum.IsDefined(typeof(TypeCategorie), _categorie));
    Mais cela dit, je vois toujours pas pourquoi tu te trimballes des strings:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Exploitation : ObjetDomaine
        {
            public enum TypeCategorie { Secteur, Complexe }
     
            public string Identifiant { get; set; }
            public string Parent_id { get; set; }
            public string Libelle { get; set; }
            public TypeCategorie Categorie {get;set;}
            public Exploitation() { }
     
        }
    Ca marche très bien! Si tu veux l'afficher dans un GUI WPF ou Silverlight tu utilises un converter pour representer la valeur par un autre string, une image, etc.

  8. #28
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Si tu voulais des strings, la solution à base de classe que je t'ai proposé fonctionne bien. Tu peux même la coupler avec un fichier de ressource pour être plus propre.

  9. #29
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    disons que mon objet exploitation correspond à une table de ma base qui à un champs id, parent_id,libelle, categorie ...

    j'ai fait ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private bool IsTypeCategorie(string value)
            {
                if (Enum.IsDefined(typeof(TypeCategorie), value))
                    return true;
                else
                    return false;
            }
    j'essaye de trouver s'il existe une librairie permettant de faire ce genre de chose

    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
     
     
    public enumType Categorie:String
    {
    Secteur="secteur"
    }
     
    public enumType Modele:Voiture
    {
    ferrari=voitureFerrari()
    }
     
    private static voiture voitureFerrari()
    {
    ....
    }

  10. #30
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    J'ai rien compris a ton code, mais en tout cas je pense qu'il y'a un problème de modélisation dans la base! Tu ne devrais pas avoir les valeurs sous la forme de chaine de caractères pour les valeurs de tes enumerations! Il faut les stocker sous une forme d'entier et éventuellement créer une jointure avec une table qui contient les valeurs. Tout ca dans un soucis de normalisation.

  11. #31
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    vu la tête de la base c'est pas cette table qui va la pourrir plus qu'elle ne l'est déjà

  12. #32
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    vu la tête de la base c'est pas cette table qui va la pourrir plus qu'elle ne l'est déjà
    C'est comme ça qu'une application se dégrade.

    Partant de ce principe là, tu peux aussi créer un index sur un texte, ne plus mettre de clé primaire et renommer toutes tes tables en camel case...

  13. #33
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Er3van je crois qu'aujourd'hui la règles pour le nommage des table c'est bien la camelCase...

  14. #34
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430

  15. #35
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Ouais mais l'article est pas tout neuf, et les conventions, ça peut évoluer...

    C'est vrai que jusqu'ici, en pratique j'ai surtout vu des noms sous la forme décrite dans l'article, mais on voit de plus en plus de noms de tables en CamelCase, notamment dans les articles de Microsoft concernant Entity Framework et les technos qui tournent autour

    De toutes façons une convention, ce n'est pas unique, tout le monde n'est pas obligé d'adopter la même

  16. #36
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Oui, et jusqu'à ce que Microsoft affirme clairement une volonté d'uniformiser ça, ça restera à la discrétion des (développeurs et) dba.

  17. #37
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Je suis partit sur les enums finalement

    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
    39
     
       public class Exploitation : ObjetDomaine
        {
            public string Identifiant { get; set; }
            public string Parent_id { get; set; }
            public string Libelle { get; set; }
            private string _categorie;
     
            public enum TypeCategorie { Secteur, Complexe, LS, Systeme, Gare, Voie }
     
            public string Categorie
            {
                get
                {
                    if (IsTypeCategorie(_categorie))
                        return _categorie;
                    else
                        throw new Exception("La catégorie d'exploitation est incorrecte ou ne contient aucun élément");
                }
                set
                {
                    if (IsTypeCategorie(value))
                        _categorie = value;
                    else
                        throw new Exception("La catégorie d'exploitation est incorrecte: elle doit correspondre à un secteur, complexe...");
                }
            }
     
            private bool IsTypeCategorie(string value)
            {
                if (Enum.IsDefined(typeof(TypeCategorie), value))
                    return true;
                else
                    return false;
            }
     
            public Exploitation() { }
     
        }
    Voilà la base pour info:

    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
     
    /****** Objet*:  Table [dbo].[TRD_EXPLOITATION]    Date de génération du script*: 07/04/2011 09:20:01 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[TRD_EXPLOITATION](
    	[EXP_ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    	[EXP_EXP_ID] [numeric](18, 0) NULL,
    	[EXP_LIBELLE] [varchar](50) COLLATE French_CI_AS NOT NULL,
    	[EXP_CATEGORIE] [varchar](50) COLLATE French_CI_AS NOT NULL,
    	[EXP_USR_CRE] [varchar](10) COLLATE French_CI_AS NULL,
    	[EXP_DAT_CRE] [datetime] NULL,
    	[EXP_USR_MAJ] [varchar](10) COLLATE French_CI_AS NULL,
    	[EXP_DAT_MAJ] [datetime] NULL,
    PRIMARY KEY CLUSTERED 
    (
    	[EXP_ID] ASC
    )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
    SET ANSI_PADDING OFF
    GO
    ALTER TABLE [dbo].[TRD_EXPLOITATION]  WITH CHECK ADD FOREIGN KEY([EXP_EXP_ID])
    REFERENCES [dbo].[TRD_EXPLOITATION] ([EXP_ID])
    GO
    ALTER TABLE [dbo].[TRD_EXPLOITATION]  WITH CHECK ADD CHECK  (([EXP_CATEGORIE]='Voie' OR [EXP_CATEGORIE]='Gare' OR [EXP_CATEGORIE]='Systeme' OR [EXP_CATEGORIE]='LS' OR [EXP_CATEGORIE]='Complexe' OR [EXP_CATEGORIE]='Secteur'))
    je passe à résolu merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Comment vérifier qu'un textbox contient bien que des chiffres..
    Par thomasmrl dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/05/2013, 22h56
  2. vérifier si une requete renvoie bien une valeur
    Par ssisssou dans le forum Langage
    Réponses: 1
    Dernier message: 17/03/2010, 12h32
  3. Réponses: 0
    Dernier message: 15/08/2007, 16h36
  4. Réponses: 1
    Dernier message: 08/08/2007, 18h07
  5. vérifier que l'utilisateur entre bien une heure
    Par youp_db dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2006, 11h15

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