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 :

Utiliser une class statique


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Par défaut Utiliser une class statique
    Bonjour tout le monde,

    Je tentes de compiler un projet que je viens de convertir de VS2003 à VS2008. Je ne sais pas si le projet fonctionnait sur VS2003 mais je bloque sur une classe statique que voici
    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 GlobalHelper
        {
            public static Servers dbServers = new Servers();
            public static Groups dbGroups = new Groups();
            public static ApplicationSettings appSettings = new ApplicationSettings();
     
            public static ControlHideShow controlHideShow = new ControlHideShow();
            public static Form[] MDIChildrens;
     
     
            public static LiveInformationBox.InfoWindow infoWin = new LiveInformationBox.InfoWindow(
                System.IO.Path.Combine(Application.StartupPath, "XMLInfoFile.xml"),
                LiveInformationBox.InfoWindow.WindowPositions.BOTTOM_RIGHT
            );
     
            public static void PopulateGroupsDropDown(ComboBox cb, string selected_text)
            {
                (...)
            }
        }
    Le programme léve une exception sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GlobalHelper.controlHideShow.Enable = false;
    L'erreur est:
    Une exception a été levée par l'initialiseur de type pour 'MultiRemoteDesktopClient.GlobalHelper'.
    En débug, la variable GlobalHelper.controlHideShow est à Null et le constructeur de GlobalHelper.controlHideShow n'est jamais appelé. J'ai tenté de faire un GlobalHelper.controlHideShow = new ControlHideShow(); mais j'ai la même erreur sur cette ligne.

    Quelqu'un peut me dire comment raisoudre le problème ?

    Merci beaucoup d'avance

  2. #2
    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
    C'est une erreur lors de l'initialisation de la classe. Regarde l'exception interne (InnerException) pour avoir plus de détails, là on peut pas savoir ce qui ne va pas (mis à part le fait que cette classe est un condensé de mauvaises pratiques...)

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Accessoirement la classe n'est pas une classe statique.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par tomlev Voir le message
    (mis à part le fait que cette classe est un condensé de mauvaises pratiques...)
    Oui, à ce stade, ça relève presque de la caricature. Une sorte de bétisier du C# à elle toute seule

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Par défaut
    Merci pour vos informations.

    Selon les erreurs plus détaillées, c'est une Dll de SQLite qui me manque.

    Par contre, j'avoue que je ne vois pas le problème de cette class.
    C'est le fait de faire un new dans une var static qui elle-même n'est pas dans une class static ?

  6. #6
    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 narfight Voir le message
    Par contre, j'avoue que je ne vois pas le problème de cette class.
    C'est le fait de faire un new dans une var static qui elle-même n'est pas dans une class static ?
    Non, ça ce n'est pas un problème...

    C'est plutôt des problèmes conceptuels :
    - C'est une classe fourre-tout qui sert à tout et n'importe quoi. Il faut séparer les responsabilités dans différentes classes
    - Mettre des bouts d'interface graphique accessibles comme ça de façon globale, c'est pas très propre
    - C'est quoi ce "MDIChildren" ? Tu vas le mettre à jour à la main à chaque fois qu'un enfant MDI sera ajouté ou supprimé ?
    - les champs publics, c'est mal ; et dans les rares cas où ça se justifie, il faut qu'ils soient en lecture seule.

    Bref, on est assez loin des bonnes pratiques... mais bon, c'est malheureusement très classique

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/05/2006, 14h34
  2. Réponses: 5
    Dernier message: 03/04/2006, 09h57
  3. Utiliser une bibliothèque statique
    Par djflex68 dans le forum MFC
    Réponses: 6
    Dernier message: 15/08/2005, 19h26
  4. [Applet]utiliser une classe d'un package dans une applet
    Par jeromejanson dans le forum Applets
    Réponses: 1
    Dernier message: 30/06/2005, 08h13
  5. [EJB][JONAS] EJB utilisant une classe "externe"
    Par Gregory3000 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/12/2004, 19h57

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