Niespójna dostępność: typ nieruchomości jest mniej dostępny

100

Czy ktoś może pomóc z następującym błędem:

Niespójna dostępność: typ właściwości „Test.Delivery” jest mniej dostępny niż właściwość „Test.Form1.thelivery”

private Delivery thedelivery;

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

Nie mogę uruchomić programu z powodu komunikatu błędu o niespójności.

Oto moja klasa dostawy:

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
źródło

Odpowiedzi:

211

publicZamiast tego zadeklaruj swoją klasę za pomocą modyfikatora dostępu, dodając publicsłowo kluczowe przed nazwą klasy

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
źródło
0down głosaccept sorry czy możesz mi powiedzieć, jak zmienić moją klasę na publiczny modyfikator dostępu
David Bukera
@DavidBukera: Myślę, że masz to
Ravindra Bagale
5
Moim rozwiązaniem było USUNIĘCIE public z definicji mojej klasy.
Cody
12

Twoja klasa Deliverynie ma modyfikatora dostępu, co oznacza, że ​​domyślnie internal. Jeśli następnie spróbujesz ujawnić właściwość tego typu jako public, to nie zadziała. Twój typ (klasa) musi mieć taki sam lub wyższy poziom dostępu jak Twoja usługa.

Więcej o modyfikatorach dostępu: http://msdn.microsoft.com/en-us/library/ms173121.aspx

J. Steen
źródło
8

Twoja Deliveryklasa jest wewnętrzna (domyślna widoczność klas), jednak właściwość (i przypuszczalnie klasa zawierająca) jest publiczna, więc właściwość jest bardziej dostępna niż Deliveryklasa. Musisz albo Deliveryupublicznić, albo ograniczyć widoczność theliverynieruchomości.

Zawietrzny
źródło