Accessibilità incoerente: il tipo di proprietà è meno accessibile


100

Qualcuno può aiutare con il seguente errore:

Accessibilità incoerente: il tipo di proprietà "Test.Delivery" è meno accessibile della proprietà "Test.Form1.thelivery"

private Delivery thedelivery;

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

Non riesco a eseguire il programma a causa del messaggio di errore di incoerenza.

Ecco la mia lezione di consegna:

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(); }
        }
    }
}

Risposte:


211

Dichiara invece la tua classe con un publicmodificatore di accesso aggiungendo la publicparola chiave davanti al nome della 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(); }
        }
    }
}

0down voteaccept scusa puoi dirmi come rendere la mia classe al modificatore di accesso pubblico
David Bukera

@DavidBukera: penso che tu abbia capito
Ravindra Bagale

5
La mia soluzione era RIMUOVERE public dalla mia definizione di classe.
Cody

12

La tua classe Deliverynon ha modificatori di accesso, il che significa che il valore predefinito è internal. Se poi provi a esporre una proprietà di quel tipo come public, non funzionerà. Il tuo tipo (classe) deve avere un accesso uguale o superiore alla tua proprietà.

Ulteriori informazioni sui modificatori di accesso: http://msdn.microsoft.com/en-us/library/ms173121.aspx


8

La tua Deliveryclasse è interna (la visibilità predefinita per le classi), tuttavia la proprietà (e presumibilmente la classe contenente) sono pubbliche, quindi la proprietà è più accessibile della Deliveryclasse. È necessario rendere Deliverypubblica o limitare la visibilità della theliveryproprietà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.