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 :

Impossible d'appeler une class à portée "public" [Débutant]


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut Impossible d'appeler une class à portée "public"
    Bonjour à tous,
    J'ai dans mon projet 2 classes avec des portées public. C'est un projet ASP.NET, seule le code behind pose problème.
    J'ai crée une classe de connexion nommée ConnectionClass 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
    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
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data.SqlClient;
     
     
    namespace Coffee.App_Code
    {
        public static class ConnectionClass
        {
            //static--> avoir la variable partout dans le projet
     
            private static SqlConnection conn;
            private static SqlCommand command;
     
            public static ConnectionClass()
            {
                string connectionString = ConfigurationManager.ConnectionStrings["CoffeeConnection"].ToString();
                conn = new SqlConnection(connectionString);
                command = new SqlCommand("", conn);
            }
     
            public static ArrayList GetCoffeByType(string coffeeType)
            {
                ArrayList List = new ArrayList();
                string query = string.Format("SELECT * FROM coffee WHERE type LIKE'{0}'", coffeeType);
     
                try
                {
                    conn.Open();
                    command.CommandText = query;
                    SqlDataReader reader = command.ExecuteReader();
     
                    while (reader.Read())
                    {
                        int id = reader.GetInt32(0);
                        string name = reader.GetString(1);
                        string type = reader.GetString(2);
                        double price = reader.GetDouble(3);
                        string roast = reader.GetString(4);
                        string country = reader.GetString(5);
                        string image = reader.GetString(6);
                        string review = reader.GetString(7);
     
                        Coffee.App_code.Coffee coffee = new Coffee.App_code.Coffee(id, name, type, price, roast, country, image, review);
                        List.Add(coffee);
     
                    }
     
                }
                finally
                {
                    conn.Close();
                }
     
                return List;
            }
        }
     
     
    }
    et la page nommée Coffee, ayant le code behind 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using Coffee;
     
     
     
    namespace Coffee.Pages
    {
        public partial class Coffee : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
     
            }
     
            private void FillPage()
            {
                ArrayList coffeeList = new ArrayList();
     
                if (!IsPostBack)
                {
                    coffeeList = ConnectionClass.GetCoffeeByType("%");
                }
                else
                {
                    coffeeList = ConnectionClass.GetCoffeeByType(DropDownList1.SelectedValue);
                }
            }
        }
    }
    Comme vous pouvez le voir en image jointe, dans le code-behind de la page, lorsque j'appelle la ConnectionClass, elle est soulignée de rouge. Impossible de l'appeler. Et à mon grand désarroi, je n'arrive pas à déceler d’où provient l'erreur. Merci de m'aider.
    Images attachées Images attachées  
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  2. #2
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,
    Des infos sur les namespaces

    Vous devez ajouter "Using Coffee.App_Code" dans votre fichier "Coffee"

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut
    Je l'ai fait, mais comme auparavant, il est souligné de rouge (voir image jointe=.
    Images attachées Images attachées  
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  4. #4
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Si la classe ConnectionClass est dans un projet différent, il faut ajouter une référence au projet.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    Si je me fie à ton code, ConnectionClass est dans le dossier Asp_code, non ?
    Ce qui signifie que ce code sera compilé par ASP quand le site s'initialisera ou que le fichier changera (si ma mémoire ne me joue pas des tours).

    As-tu une raison pour mettre une classe s'occupant de la connexion à la base de données dans le dossier Asp_code ?
    As-tu essayé de mettre ton fichier dans un autre dossier ?
    Même si le message est osuligné en rouge, le projet compile t'il et s'exécute t'il ?

  6. #6
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Points : 4 574
    Points
    4 574
    Par défaut
    Citation Envoyé par Alexandre le Grand Voir le message
    Je l'ai fait, mais comme auparavant, il est souligné de rouge (voir image jointe=.
    Salut,

    Quand tu ajoutes la référence, il faut mettre App_Code et non App_code.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut
    Bonsoir à tous,

    Au fait, c'est une remarque que j'ai faite avec Visual Studio 2012, lorsque que je change le nom du dossier avec comme exemple Code au lieu de App_code ou encore App_Code, il n'y a plus de problème. La classe est appelée partout.
    La remarque la plus frappante est la suivante qui pourrait être une nouveauté de Visual Studio 2012: Lorsque vous ajoutez dossier dont le noms est compris dans cette suite que voici '{App_code, App_GlobalResources, App_Browsers...theme}, vous avez carrement un choix limité d'éléments ajoutable selon le dossier créer, Et tous ces dossier sont pré-nommés et trouvables de la façon suivante: Faites un clic droit sur le projet, vous avez une option Ajouter ---> "Ajouter le dossier ASP.NET" qui elle même renferme tous les dossiers sus-nommés.
    Peut-être que ceci devrait expliquer l’impossibilité d'appeler cette classe de portée public.
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    En principe mettre du code dans ce dossier ne devrait jamais avoir lieu, c'est plutôt un signe que l'architecture du site est bancale.

    L'intérêt principal de ce dossier, c'est que si tu y mets des fichiers .XSD, le .NET Framework va te créer automatiquement le dataset lié. Idem pour les .WSDL, il va créer une classe proxy automatiquement...

    A part ça, à mon sens, il ne faudrait jamais y mettre de code car ça peut vite devenir le foutoir, et ce n'est pas plus coûteux d'utiliser des DLL.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

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

Discussions similaires

  1. [Package] Appel à une classe
    Par GLDavid dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2006, 12h49
  2. Appeler une classe CSS avec Javascript
    Par p0Kep0K dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/02/2006, 14h50
  3. Réponses: 14
    Dernier message: 15/12/2005, 18h46

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