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

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

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.