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 :

Accès à une propriété une fois


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 49
    Par défaut Accès à une propriété une fois
    Bonjour : j'aimerais contraindre qu'à la compilation, une constante ne soit appelé qu'une et une seul fois.
    Est-ce quelque chose d'envisageable ?

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Bonjour,

    Tu as quoi comme impératif pour vouloir une telle chose ?
    Pourquoi pas un compteur ? Pourquoi qu'une seule fois ?

    En tout cas je serais surpris que cela soit faisable ! mais qui sait !

    J@ck.

  3. #3
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Il faut nous donner d’avantages d'éléments concernant ta problématique car cela me semble particulièrement bizarre de vouloir accéder à une constante une seule fois lors de la compilation ?????

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 49
    Par défaut
    Héhé :

    Je m'attendais à ce genre de réponse.

    Bon, il y a plusieurs cas ou ça me paraîtrais judicieux : certains sont directement lié à mon activité donc délicat, un autre à un défaut (ou de l'incompétence) lié à une librairie exotique utilisé...

    Enfin, je vois un cas qui pourrais parler à tous :

    Avoir un struct (ou un autre type) contenant une liste d'identifiant (typiquement du string ou du char[]) pour une appli web. Ces identifiants (réutilisé en javascript) doivent être unique dans l'ensemble de l'appli.
    Les composants les utilisant peuvent se retrouver sur la même page de manière très aléatoire car l'utilisateur final compose son interface à sa convenance.

    bref, ça peut donner des bugs difficile à reproduire.

    L'idée était de prendre le mal à la source et éviter d'appeler l'identifiant plusieurs fois.

    Une solution avec un test à l’exécution permettrait d'identifier le soucis mais après mise en prod donc bof.

    Sinon, je sais qu'il est possible d'utiliser des identifiants uniques (uuid) ou d'utiliser une nomenclature de nommage (genre namespace) pour éviter la majorité des cas... mais tout ça me semble peut convainquant.

    Ce qui me surprend, c'est que j'ai mis ça en place dans un autre langage (Rust : que j'utilise à titre perso pour étendre mes connaissances) sans difficulté particulière.

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Il nous est difficile de comprendre ce que tu cherches a faire, tu expliques tres mal ton cas

    Citation Envoyé par mothsART Voir le message
    Avoir un struct (ou un autre type) contenant une liste d'identifiant (typiquement du string ou du char[]) pour une appli web. Ces identifiants (réutilisé en javascript) doivent être unique dans l'ensemble de l'appli.
    Les composants les utilisant peuvent se retrouver sur la même page de manière très aléatoire car l'utilisateur final compose son interface à sa convenance.
    Si je comprends bien, tu veux pouvoir disposer d'une liste d'identifiants sans doublons. C'est bien ca ?

    Si oui, tu peux utiliser un HashSet ou un SortedSet si l'ordre est important, et si tu utilises .NET Framework >= 4.

    Il y a aussi le type Dictionary qui permet de s'assurer qu'une cle (donc un identifiant dans ton cas) n'existe qu'une seule fois.

    Si aucun de ces types ne correspond a ce que tu cherches, tu peux aussi implementer ta propre classe qui derive d'une liste et qui va controler qu'il n'y ait pas de doublon lorsqu'un element est ajoute.

    Enfin, si cela ne correspond pas a ta recherche, explique-toi plus clairement et eventuellement poste un exemple concret.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 49
    Par défaut
    C'est bien une liste d'identifiants sans doublons mais je veux faire ce test à la compilation.

    Je connais les HashSet, SortedSet et les Dictionary et ça ne répond pas vraiment à la problématique.

    Le s 3 pré-cités vont tester les doublons lors de l'ajout mais rien ne m'interdit d'appeler plusieurs fois la même clés à des endroits différents...

    Si j'étais dans une problématique de test à l’exécution, je ferais sans doute quelque chose qui s'apparenterais à ça :

    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
    40
    41
    42
     
    using System;
    using System.Collections.Generic;
     
    namespace test
    {
        public class Program
        {
    		public class AppException : Exception
    		{
    		   public AppException(String message) : base (message)
    		   {}
     
    		   public AppException(String message, Exception inner) : base(message,inner) {}
    		}
     
    		public class MonDic : Dictionary<int, string> {
    			public string donne(int cle) {
    				if (this.ContainsKey(cle)) 
    				{
    					string valeur = this[cle];
    					this.Remove(cle);
    					return valeur;
    				}
    				throw new AppException("Y'a un doublon d'id");
    			}
    		}
     
            public static void Main(string[] args)
            {
    			MonDic d = new MonDic();
     
    			d.Add(1, "un");
    			d.Add(2, "deux");
    			d.Add(3, "trois");
     
    			Console.WriteLine(d.donne(1));
    			Console.WriteLine(d.donne(1));
    		}
     
        }
    }
    Seulement, j'aimerais faire ça
    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
     
    using System;
     
    namespace test
    {
        public class Program
        {
    		public static class ListeID {
    			public static string idRechercheComposantUn = "idUn";
    			// ...
    			public static string idRechercheComposantMille = "idMille";
     
    		}
     
            public static void Main(string[] args)
            {
    			// Dans l'appli Un
    			Console.WriteLine(ListeID.idRechercheComposantUn);
     
    			// Dans l'appli mille, le dev c'est paluché : il appelle l'id du composant mille
    			// => ça marche dans ses tests car il n'a pas testé les 2 composants (Un et Mille) dans la même page !
    			Console.WriteLine(ListeID.idRechercheComposantUn);
    		}
     
        }
    }

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/03/2011, 16h10
  2. [Débutant] Déclarer une propriété une fois pour toute
    Par lecteur1001 dans le forum MATLAB
    Réponses: 6
    Dernier message: 27/09/2010, 18h05
  3. lire une table une ligne à la fois
    Par DEV-10 dans le forum Langage SQL
    Réponses: 18
    Dernier message: 29/07/2009, 21h20
  4. acces données d'une fct à une autre, (Qt4)
    Par ostralo dans le forum C++
    Réponses: 17
    Dernier message: 05/06/2008, 21h38
  5. Réponses: 10
    Dernier message: 19/02/2004, 12h58

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