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 :

Instances nommées singleton-like


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut Instances nommées singleton-like
    Bonjour,
    J'ai besoin de créer une classe permettant un nombre d'instances limité.
    Mon application gère plusieurs langues et je souhaite faire une instance unique de ma classe par langue et pouvoir appeler mon instance par sa langue.

    j'ai déjà trouvé un pattern pour faire un singleton :
    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
     
    InternationalizerHelper()
                : base()
            {
               [...]
                this.SetCulture(System.Globalization.CultureInfo.GetCultureInfo("fr-FR"));
            }
     
            public static InternationalizerHelper Instance
            {
                get { return Instanciate.instance; }
            }
     
            class Instanciate
            {
                static Instanciate() { }
                internal static readonly InternationalizerHelper instance = new InternationalizerHelper();
            }
    Dans mon exemple la langue de la culture est pasée en dur, mais un passage en paramètre est souhaité.

    J'imagine qu'il doit me falloir une collection à un moment et qu'un appel du genre Instace["fr-FR"] me permettrai de retrouver l'instance souhaitée

    si quelqu'un a une idée

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Pourquoi ne pas simplement changer ta propriété Instance en méthode GetInstance(string maCulture) ?

    Ca peut être une voie !

  3. #3
    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
    Tu pourrais utiliser un dictionnaire statique qui contiendrait les instances de la classe pour chaque langue :

    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
    public class InternationalizerHelper
    {
        private InternationalizerHelper(string culture)
        {
        }
     
        private static Dictionary<string, InternationalizerHelper> _instances = new Dictionary<string, InternationalizerHelper>();
     
        public static InternationalizerHelper GetInstance(string culture)
        {
            InternationalizerHelper instance;
            if (!_instances.TryGetValue(culture, out instance))
            {
                instance = new InternationalizerHelper(culture);
                _instances.Add(culture, instance);
            }
            return instance;
        }
     
    }

  4. #4
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Ok, merci à vous, je vais essayer ça dès demain matin.


    Je savais que c'était quelque chose de simple, mais je ne savais pas trop par où prendre le bestio !

  5. #5
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    A la place d'une méthode GetInstance(...) on peut aussi utiliser un indexeur, si on veut avoir accès aux instances comme si c'était un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse.Instance["fr-FR"]...
    Cela revient au même au final (le corps de l'indexeur sera le même que la méthode GetInstance). Question de goût principalement.

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

Discussions similaires

  1. [SQL Server 2005] Instances nommées
    Par mad_martigan dans le forum Développement
    Réponses: 6
    Dernier message: 23/04/2009, 17h40
  2. [SSIS][2k5] SqlConnection et instance nommée
    Par Cyborg289 dans le forum SSIS
    Réponses: 1
    Dernier message: 28/02/2008, 16h10
  3. SqlConnection et Instance Nommée
    Par Cyborg289 dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/02/2008, 16h09
  4. Pbm accès instance nommée par application
    Par moisex dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2007, 15h42
  5. Réponses: 5
    Dernier message: 10/10/2006, 09h39

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