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

Windows Forms Discussion :

Erreur Accessibilité incohérente


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Erreur Accessibilité incohérente
    Bonjour!

    J'ai un petit souci et j'ai besoin de vos lumieres: je développe ma premiere appli CSHARP alors que je suis plutot JAVA et j'ai un souci!

    J'ai crée dans un fichier .cs la classe DataDriveStyle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    namespace INTERFACE
    {
        class DataDriveStyle
        {
            public DataDriveStyle()
            {...}
        }
    }

    et d'autre part, dans le form d'ouverture de mon application j'ai:

    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
    namespace INTERFACE
    {
        public partial class FormInitializer : Form
        {
     
            public DataDriveStyle     drivestyle;    :langue:
            public FormMainScreen   mainscreen;
     
            public FormInitializer()
            {
                InitializeComponent();
            }
     
            private void FormInitializer_Load(object sender, EventArgs e)
            {
                  drivestyle = new DataDriveStyle();
                  mainscreen = new FormMainScreen();
            }
        }
    }
    L'instanciation de mon form FormMainScreen se déroule sans souci cependant pour ma classe DataDriveStyle j'ai une érreur à la compilation ():

    Erreur 1 Accessibilité incohérente : le type de champ 'INTERFACE.DataDriveStyle' est moins accessible que le champ 'INTERFACE.FormInitializer.drivestyle' D:\Projects\CIVIC\COMPUTER\INTERFACE\CSHARP\INTERFACE\FormMainScreen.cs 23 32 INTERFACE
    J'ai l'impression qu'il ne trouve pas le type DataDriveStyle alors que c'est bien en vert!
    Je comprends pas!!! merci d'avance si vous avez une solution!

    PS: J'ai essayé une instanciation directe du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            private void FormInitializer_Load(object sender, EventArgs e)
            {
                  DataDriveStyle drivestyle = new DataDriveStyle();
            }
    Et cela fonctionne! Mais j'ai besoin de cette instance dans toute ma classe moa!!!

  2. #2
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    j'ai déjà eu aussi ce problème je ne sais pas pourquoi c# refuse, et j'ai jamais réussit à regler le problème, donc ca m'interesse aussi de savoir pourquoi .NET refuse ce genre de chose. On dirait qu'il trouve incohérent de mettre l'objet en public, en privé ca passe sans problème.
    La seules méthode que j'ai trouvé c'est de gérer les évènement de mon objet dans le formulaire, et de d'appelr ces méthode à partir de l'autre, mais bon ca s'adaptait à ma problématique.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bon moi aussi j'ai eu le problème. Il m'a fallu une heure pour trouver la solution que voici :
    quand on crée une classe, si on ne définit aucune accessibilité, elle est privée par défaut . Du coup, on ne peut pas affecter une instance de cette classe à une variable publique ou protégée.

    Mrgn, dans ton code il faut que tu mettes "public" devant la déclaration de ta classe DataDriveStyle.

    @+

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Programmator Voir le message
    quand on crée une classe, si on ne définit aucune accessibilité, elle est privée par défaut .
    Pour être plus précis elle est internal et je ne vois pas ce qu'il y a de choquant tout au contraire (une classe ne peut être private que si elle est définie dans une autre classe).

    Quand tu déclares un membres dans ta classe il est bien internal par défaut et ça te gêne pas.

    Maintenant revenons en au problème qui est super logique.
    Tu déclares une classe internal (donc accessible que dans l'assembly où elle est définie), ensuite tu essaies de mettre une instance de cette classe dans un membre public (donc accessible par n'importe qui n'importe où donc possiblement dans une autre assembly) d'où le problème de cohérence.

    Ok ?

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 45
    Points : 64
    Points
    64
    Par défaut
    Merci Skyounet J'ai eu le même problème. J'ai déclaré une classe sans préciser l'attribut dans un namespace A et ensuite j'ai déclaré une propriété publique sur une liste de cette classe dans une classe partielle : Problème de cohérence. Il a donc fallu mettre la classe en public

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/03/2011, 23h52
  2. Accessibilité Incohérente le type de paramètre
    Par florianjoy54 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/03/2010, 17h55
  3. Erreur d'accessibilité incohérente
    Par homomorphisme dans le forum C#
    Réponses: 18
    Dernier message: 10/05/2008, 01h41
  4. Erreur : "Accessibilité incohérente"
    Par pot2yaourt dans le forum C#
    Réponses: 1
    Dernier message: 01/05/2007, 10h04
  5. [C#] Problème "Accessibilité incohérente"
    Par Oberown dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/11/2004, 15h52

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