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 :

classe static partielle : initialiser lors de la première utilisation


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut classe static partielle : initialiser lors de la première utilisation
    Bonjour,

    J'ai une classe partielle static dont je ne peux pas modifier le code. J'aimerais enrichir cette classe en définissant une autre partie de cette classe. J'aimerais initialiser certaines propriétés de cette classe dans le constructeur static, mais je ne peux pas définir un tel constructeur dans ma partie car il existe déjà un constructeur static dans la partie de la classe dont je ne peux pas modifier le code. Comment faire alors pour initialiser mes propriété lors de la première utilisation de cette classe ? Peut-on définir des constructeurs "Partiels" ?

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par maa Voir le message
    Peut-on définir des constructeurs "Partiels" ?
    Non je ne crois pas ( et puis si c'était possible, le code aurai été encore plus délirant ) par contre tu peut procéder, par exemple, 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
     
    static class MaClass
    {
      static MonObjet objet = null;
      public static MonObjet Objet
      {
        get {
        if(objet = null)
          InitialiseMonObjet();
        return objet;
        }
      }
    }

  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
    Citation Envoyé par maa Voir le message
    Bonjour,

    J'ai une classe partielle static dont je ne peux pas modifier le code. J'aimerais enrichir cette classe en définissant une autre partie de cette classe. J'aimerais initialiser certaines propriétés de cette classe dans le constructeur static, mais je ne peux pas définir un tel constructeur dans ma partie car il existe déjà un constructeur static dans la partie de la classe dont je ne peux pas modifier le code. Comment faire alors pour initialiser mes propriété lors de la première utilisation de cette classe ? Peut-on définir des constructeurs "Partiels" ?
    Euh .... déjà, sans préjuger de la solution, la description du problème respire l'embrouille de première classe

    Les classes partielles, ok, ça permet de ne pas mélanger le code généré par le designer du reste, mais, en général, on en abuse pas en dehors de ce cas.

    Les classes partielles statiques, même si il n'y a pas d'objection technique, c'est déjà plus capillotracté; c'est une idée originale, disons.


    La description de ton problème ressemble plus à un problème de design qu'à un problème de programmation.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je suis un peu d'accord avec BlueDeep sur le problème potentielle de design.

    Mais si tu veux vraiment le faire, comme smyley je ferais une ou plusieurs méthodes d'initialisation (appelée ou non dans la property à toi de voir)

    pour moi un constructeur = méthode d'initialisation appelé à l'instanciation de la classe.

    Donc quand je ne peut pas utiliser les constructeur ....

    Ce qui est drôle c'est de voir dans les MS, les constructeurs de classes appelés des méthodes d'initialisation
    (j'ai en tête le code généré automatiquement pour un winforms)

  5. #5
    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 ced600 Voir le message
    Ce qui est drôle c'est de voir dans les MS, les constructeurs de classes appelés des méthodes d'initialisation
    (j'ai en tête le code généré automatiquement pour un winforms)
    Je ne vois pas ce que tu trouves de drôle/choquant à cela : quand tu as des constructeurs multiples, c'est parfaitement logique (et il est fréquent d'en ajouter sur les objets hérités de UserControl ou de Form).

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Je ne vois pas ce que tu trouves de drôle/choquant à cela : quand tu as des constructeurs multiples, c'est parfaitement logique (et il est fréquent d'en ajouter sur les objets hérités de UserControl ou de Form).
    J'ai utilisé un mauvais terme, je ne trouve pas cela choquant.
    Je m'étais en évidence leur façon de faire que je trouve correcte.
    Dans ma tête j'y opposais le comportement de certain à charger le constructeur avec 50 000 lignes de codes d'initialisations. Je suis plus pour l'appel à une ou plusieurs méthodes d'initialisations.

  7. #7
    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 ced600 Voir le message
    J'ai utilisé un mauvais terme, je ne trouve pas cela choquant.
    Je m'étais en évidence leur façon de faire que je trouve correcte.
    Dans ma tête j'y opposais le comportement de certain à charger le constructeur avec 50 000 lignes de codes d'initialisations. Je suis plus pour l'appel à une ou plusieurs méthodes d'initialisations.
    OKI Nous sommes donc sur la même longueur d'onde.

Discussions similaires

  1. [Lazarus] Erreur "Initialisation output" lors de la première exécution
    Par winow dans le forum Lazarus
    Réponses: 3
    Dernier message: 25/01/2011, 09h31
  2. Init lors de la première utilisation
    Par Mister Nono dans le forum Struts 1
    Réponses: 16
    Dernier message: 22/11/2007, 12h06
  3. Réponses: 12
    Dernier message: 03/09/2006, 18h26
  4. Langues lors de la première connexion
    Par JMLD dans le forum XMLRAD
    Réponses: 6
    Dernier message: 27/04/2005, 16h38
  5. Pb accès entre 2 classes static
    Par d.w.d dans le forum C++
    Réponses: 5
    Dernier message: 23/02/2005, 19h05

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