Непоследовательная доступность: тип собственности менее доступен

100

Пожалуйста, может кто-нибудь помочь со следующей ошибкой:

Несогласованная доступность: тип свойства Test.Delivery менее доступен, чем свойство Test.Form1.thelivery.

private Delivery thedelivery;

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

Я не могу запустить программу из-за сообщения об ошибке несоответствия.

Вот мой класс доставки:

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(); }
        }
    }
}
Дэвид Букера
источник

Ответы:

212

сделайте свой publicмодификатор доступа к классу ,

просто добавьте publicключевое слово перед именем вашего класса

 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(); }
        }
    }
}
Равиндра Багале
источник
0 голос против принять извините, не могли бы вы рассказать мне, как сделать мой класс модификатором общего доступа
Дэвид Букера
@DavidBukera: я думаю, ты понял
Равиндра Багале
6
Моим решением было УДАЛИТЬ public из моего определения класса.
Cody
13

У вашего класса Deliveryнет модификатора доступа, что означает, что он по умолчанию internal. Если вы затем попытаетесь предоставить свойство этого типа как public, это не сработает. Ваш тип (класс) должен иметь такой же или более высокий уровень доступа, что и ваша собственность.

Подробнее о модификаторах доступа: http://msdn.microsoft.com/en-us/library/ms173121.aspx

Дж. Стин
источник
8

Ваш Deliveryкласс является внутренним (видимость по умолчанию для классов), однако свойство (и, предположительно, содержащий класс) являются общедоступными, поэтому свойство более доступно, чем Deliveryкласс. Вам нужно либо сделать Deliveryобщедоступным, либо ограничить видимость theliveryсобственности.

Ли
источник