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 :

creer interface pour singleton!


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut creer interface pour singleton!
    salut à tous , j'utilise spring.net et j ai un singleton de connexion en base de données je veux réaliser une interface pour ce singleton pour l'utiliser dans d'autre classe via IApplicationContext
    mais le problème que je peux pas utiliser Instance comme une classe ConnexionDao qui possède ces fonctions !

    Singleton connexion base:
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    class ConnexionDao : IConnexion
        {
            private DbConnection m_SqlCnx = null;
     
            private static ConnexionDao s_Instance;
            private static object s_InstanceLocker = new object();
     
            private ConnectionStringSettings m_CnxStringSettings;
     
           public ConnectionStringSettings CnxStringSettings
            {
                get { return m_CnxStringSettings; }
                set { m_CnxStringSettings = value; }
            }
     
            // Singleton 
            public static ConnexionDao Instance
            {
                get
                {
                    lock (s_InstanceLocker)
                    {
                        if (s_Instance == null)
                        {
                            s_Instance = new ConnexionDao();
                        }
     
                        return s_Instance;
                    }
                }
            }
        // Cette méthode créé une connexion à la BDD et la renvoit 
            public DbConnection GetSqlConnection() 
            { 
                DbProviderFactory factory = 
                DbProviderFactories.GetFactory(CnxStringSettings.ProviderName); 
     
                if (m_SqlCnx == null) 
                { 
                    m_SqlCnx = factory.CreateConnection(); 
                } 
     
                m_SqlCnx.ConnectionString = CnxStringSettings.ConnectionString; 
     
                if (m_SqlCnx.State == System.Data.ConnectionState.Closed) 
                { 
                    m_SqlCnx.Open(); 
                } 
     
                return m_SqlCnx; 
            } 
     
            public void CloseConnection() 
            { 
                if (this.m_SqlCnx != null) 
                { 
                    if (this.m_SqlCnx.State != System.Data.ConnectionState.Closed) 
                    { 
                        this.m_SqlCnx.Close(); 
                    } 
                } 
            } 
        }
    interface IConnexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    interface IConnexion
        {
            bool test_connex();
            DbConnection GetSqlConnection();
            ConnexionDao Instance() {}
             void CloseConnection();
     
        }
    la classe du test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     private void Form1_Load(object sender, EventArgs e)
            {
     
                IConnexion ico = (IConnexion)ctx.GetObject("infconnx");
     
    // l'erreur ici, l'IDE ne reconnais pas  la fonction  GetSqlConnection  comme une fonction de la  classe Instance         
      DbConnection cnx= ico.Instance.GetSqlConnection();
     
                 version_textBox.Text = cnx.ServerVersion;
     
            }

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    mais le problème que je peux pas utiliser Instance comme une classe ConnexionDao qui possède ces fonctions !
    Merci d'écrire dans un français compréhensible.

    Impossible de mettre des membres statiques dans une interface.

  3. #3
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    Impossible de mettre des membres statiques dans une interface.
    oui je sais que c'est impossible de mettre des membres statiques dans une interface , mais en utilisant l' IOC( Inverse Of Control ) qui se base sur l'utilisation d'une interface comment je peux résoudre ce problème ?!!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Yop,

    En esperant que ca t'aide :
    Using singletons with interfaces:
    http://dotnetperls.com/singleton-static

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 30
    Par défaut
    Tu écris du code bizarre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    interface IConnexion
    {
       ConnexionDao Instance() {}
    }
    Ca ne compile pas... Tu voudrais sans doute avoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    interface IConnexion
    {
       ConnexionDao Instance { get; }
    }
    Mais,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class ConnexionDao : IConnexion
    {
       public static ConnexionDao Instance { /* ... */ }
    }
    Ne compilera pas non plus. Une méthode d'une interface ne peut pas être implémentée de manière statique. Le compilateur va râler qu'il te manque la propriété Instance dans la classe ConnexionDao.

  6. #6
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    Citation Envoyé par cyberpi Voir le message
    Tu écris du code bizarre...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    interface IConnexion
    {
       ConnexionDao Instance { get; }
    }
    j ai déjà essayer ca cyberpi mais ca marche pas

Discussions similaires

  1. creer interface web pour administrer un serveur linux (fedora)
    Par sidvi59 dans le forum Administration système
    Réponses: 5
    Dernier message: 16/07/2007, 16h42
  2. quelle interface pour creer des tables
    Par acipeg dans le forum Outils
    Réponses: 4
    Dernier message: 25/11/2006, 11h25
  3. Interface pour Tablette Graphique
    Par marzizou dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/06/2004, 11h44
  4. Comment créé une "interface" pour mes programmes??
    Par alcazar dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 09/02/2004, 13h02
  5. interfaces pour Filtres DirectShow
    Par Chupakabra dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2003, 14h54

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