117 votes

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

Quelqu'un peut-il m'aider avec l'erreur suivante ?

Accessibilité incohérente : la propriété de type '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(); }
        }
    }
}

243voto

Ravindra Bagale Points 7192

Faites votre cours public modificateur d'accès,

ajoutez simplement public mot-clé devant le nom de votre 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(); }
        }
    }
}

15voto

J. Steen Points 6617

Votre classe Delivery n'a pas de modificateur d'accès, ce qui signifie que la valeur par défaut est la suivante internal . Si vous essayez ensuite d'exposer une propriété de ce type en tant que public ça ne marchera pas. Votre type (classe) doit avoir le même accès, ou un accès plus élevé, que votre propriété.

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

8voto

Lee Points 63849

Votre Delivery est interne (visibilité par défaut pour les classes), mais la propriété (et vraisemblablement la classe qui la contient) est publique, de sorte que la propriété est plus accessible que la classe Delivery classe. Vous devez soit faire Delivery public, ou restreindre la visibilité de la thelivery propriété.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X