- Forum
- Dotnet
- Langages
- C#
- Variable globale en c#
+ Répondre à la discussion
Discussion :
Sujet :
C#
- Outils de la discussion
- Afficher une version imprimable
- S'abonner à cette discussion…
- Affichage
- Choisir le mode hybride
- Choisir le mode arborescent
Variable globale en c#
J'ai une application wcf,
dans la classe service.svc j'ai un attribut=>lorsque je tape l'URI http://localhost:port/Methode1Code : Sélectionner tout -Visualiser dans une fenêtre à part 1
2
3
4
5
6
7
8
9public Liste<Collection> collections=new Liste<Collection>();public Liste<Collection> Methode1(){// du code pour remplir la liste collections return collections}public int methode2(){ return collections.Counts();}
il m'affiche le contenu de la liste sous forme XML Mais aprés quand je tape l'URI
http://localhost:port/Methode2 il m'affiche 0.
Comment gérer ça SVP?Bin c'est normal, la classe qui implémente le service est instanciée à chaque appel... Faut stocker ça quelque part...
Premièrement, les variables globales, c'est non. Non. Non. Et Non.
Mais si tu veux vraiment persister une valeur en mémoire entre des appels distincts, tu dois utiliser ton service comme un singleton.
Pour les variables globales, c'est pas forcement non !
Il suffit de bien savoir ce qui peut être commun ou pas aux objets de l'application.J'utilise une technique de Data Manager, qui par conception est accessible par tous les objets et n'existe qu'une fois pour toutes.
Je range dans ce DataManager tout ce qui doit être commun et j'y accède comme suit :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
20public class DataManager{ private static DataManager m_Instance = null; public static Instance { get { // pour la première instance if(m_Instance == null) m_Instance = new DataManager(); return m_Instance; } } public string Toto { get; set; }}
DataManager.Instance.Toto = "titi";
ou
Debug.Writeline(DataManager.Instance.Toto);
Si ça peut aider... !
Philippe
- Tu peux faire des variables globales autant que tu veux, ça reste mal. Et l'exemple que tu donnes, c'est un semblant de singleton. C'est pas la même chose.
Envoyé par phil_tema
Pour les variables globales, c'est pas forcement non !
Il suffit de bien savoir ce qui peut être commun ou pas aux objets de l'application.J'utilise une technique de Data Manager, qui par conception est accessible par tous les objets et n'existe qu'une fois pour toutes.
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
20public class DataManager{ private static DataManager m_Instance = null; public static Instance { get { // pour la première instance if(m_Instance == null) m_Instance = new DataManager(); return m_Instance; } } public string Toto { get; set; }}
Je range dans ce DataManager tout ce qui doit être commun et j'y accède comme suit :
DataManager.Instance.Toto = "titi";
ou
Debug.Writeline(DataManager.Instance.Toto);
Si ça peut aider... !
Philippe
antoine.debyser
Membre confirmé
- Points
- 460
Bonjour,
Sauf que là, il s'agit d'un webservice wcf. Que IIS peut decider de le suspendre quand ca lui chante, et que donc une variable gobale n'a pas la même durée de vie que dans une application normal.Envoyé par phil_tema
Pour les variables globales, c'est pas forcement non !
Donc oui avec un webservice, les variables global c'est mal, il faut un autre moyen de stockage persistant.
Et pour ce qui est du singleton que tu donne en example, il n'est pas thread-safe.
A noter que le pattern singleton utilise une variable globale. String.Empty est une variable globale.Envoyé par Babyneedle
Tu peux faire des variables globales autant que tu veux, ça reste mal. Et l'exemple que tu donnes, c'est un semblant de singleton. C'est pas la même chose.
Dire juste "les variables globales c'est mal", c'est simplement faux.Si tu parle du point de vue client, c'est faux, ca ne resoudra pas le probleme.Envoyé par Babyneedle
tu dois utiliser ton service comme un singleton.
- Tu sembles être TRES contre les variables globales. Quelle en est la raison ?
Envoyé par Babyneedle
Tu peux faire des variables globales autant que tu veux, ça reste mal
+ Répondre à la discussion
- Forum
- Dotnet
- Langages
- C#
- Variable globale en c#
«Discussion précédente|Discussion suivante»
Discussions similaires
-
Variable globale / Propriété des threads
Par rgarnier dans le forum XMLRAD
Réponses: 4
Dernier message: 03/10/2003, 11h49
-
Cacher Variable Url avec Variable Globale
Par danuz dans le forum XMLRAD
Réponses: 6
Dernier message: 26/09/2003, 18h20
-
Variable "globale" (dans plusieurs templa
Par mattmat dans le forum XSL/XSLT/XPATH
Réponses: 3
Dernier message: 17/06/2003, 20h22
-
question sur les variables globales et les thread posix
Par souris_sonic dans le forum POSIX
Réponses: 5
Dernier message: 13/06/2003, 14h59
-
les variables globales static
Par gRRosminet dans le forum C
Réponses: 8
Dernier message: 27/04/2002, 09h34
Partager
Partager
- Nous contacter
- Developpez.com
- Haut de page