Accessibilité incohérente: le type de propriété est moins accessible

100

Quelqu'un peut-il aider avec l'erreur suivante:

Accessibilité incohérente: le type de propriété 'Test.Delivery' est moins accessible que la propriété 'Test.Form1.thelivery'

private Delivery thedelivery;

public Delivery thedelivery
{
    get { return thedelivery; }
    set { thedelivery = value; }
}

Je ne peux pas exécuter le programme en raison du message d'erreur d'incohérence.

Voici ma classe de livraison:

namespace Test
{
    class Delivery
    {
        private string name;
        private string address;
        private DateTime arrivalTime;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public string Address
        {
            get { return address; }
            set { address = value; }
        }

        public DateTime ArrivlaTime
        {
            get { return arrivalTime; }
            set { arrivalTime = value; }
        }

        public string ToString()
        {
            { return name + address + arrivalTime.ToString(); }
        }
    }
}
David Bukera
la source

Réponses:

211

Déclarez votre classe avec un publicmodificateur d'accès à la place en ajoutant le publicmot - clé devant le nom de la classe

namespace Test
{
    public class Delivery
    {
        private string name;
        private string address;
        private DateTime arrivalTime;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public string Address
        {
            get { return address; }
            set { address = value; }
        }

        public DateTime ArrivlaTime
        {
            get { return arrivalTime; }
            set { arrivalTime = value; }
        }

        public string ToString()
        {
            { return name + address + arrivalTime.ToString(); }
        }
    }
}
Ravindra Bagale
la source
0down voteaccept désolé pouvez-vous s'il vous plaît me dire comment faire de ma classe en modificateur d'accès public
David Bukera
@DavidBukera: Je pense que vous l'avez compris
Ravindra Bagale
5
Ma solution était de SUPPRIMER public de ma définition de classe.
Cody
12

Votre classe Deliveryn'a pas de modificateur d'accès, ce qui signifie qu'elle est par défaut internal. Si vous essayez ensuite d'exposer une propriété de ce type en tant que public, cela ne fonctionnera pas. Votre type (classe) doit avoir le même accès ou un accès supérieur à votre propriété.

En savoir plus sur les modificateurs d'accès: http://msdn.microsoft.com/en-us/library/ms173121.aspx

J. Steen
la source
8

Votre Deliveryclasse est interne (la visibilité par défaut pour les classes), cependant la propriété (et vraisemblablement la classe contenant) sont publiques, donc la propriété est plus accessible que la Deliveryclasse. Vous devez soit rendre Deliverypublic, soit restreindre la visibilité de la theliverypropriété.

Lee
la source