Inkonsistente Zugänglichkeit: Der Eigenschaftstyp ist weniger zugänglich

100

Bitte kann jemand bei folgendem Fehler helfen:

Inkonsistente Zugänglichkeit: Der Eigenschaftstyp 'Test.Delivery' ist weniger zugänglich als die Eigenschaft 'Test.Form1.thelivery'.

private Delivery thedelivery;

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

Ich kann das Programm aufgrund der Fehlermeldung der Inkonsistenz nicht ausführen.

Hier ist meine Lieferklasse:

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
quelle

Antworten:

210

Deklarieren Sie Ihre Klasse publicstattdessen mit einem Zugriffsmodifikator, indem Sie das publicSchlüsselwort vor dem Klassennamen einfügen

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
quelle
0down voteaccept Entschuldigung, können Sie mir bitte sagen, wie ich meine Klasse zum öffentlich zugänglichen Modifikator machen kann
David Bukera
@ DavidBukera: Ich denke du hast es verstanden
Ravindra Bagale
5
Meine Lösung bestand darin, mich public von meiner Klassendefinition zu entfernen .
Cody
12

Ihre Klasse Deliveryhat keinen Zugriffsmodifikator, was bedeutet, dass sie standardmäßig verwendet wird internal. Wenn Sie dann versuchen, eine Eigenschaft dieses Typs als verfügbar zu machen, publicfunktioniert dies nicht. Ihr Typ (Klasse) muss den gleichen oder einen höheren Zugriff haben als Ihr Eigentum.

Weitere Informationen zu Zugriffsmodifikatoren: http://msdn.microsoft.com/en-us/library/ms173121.aspx

J. Steen
quelle
8

Ihre DeliveryKlasse ist intern (die Standardsichtbarkeit für Klassen), die Eigenschaft (und vermutlich die enthaltende Klasse) ist jedoch öffentlich, sodass auf die Eigenschaft besser zugegriffen werden kann als auf die DeliveryKlasse. Sie müssen entweder Deliverydie Sichtbarkeit der theliveryEigenschaft veröffentlichen oder einschränken .

Lee
quelle