Невідповідна доступність: тип властивості менш доступний


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

Відповіді:


211

Задекларуйте свій клас 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(); }
        }
    }
}

0down voiceaccept Вибачте, будь ласка, скажіть мені, як зробити свій клас модифікатором доступу до публічного доступу
David Bukera

@DavidBukera: я думаю, у тебе це
вийшло

5
Моє рішення полягало у ВІДКЛЮЧЕННІ public з мого визначення класу.
Коді

12

У вашому класі Deliveryнемає модифікатора доступу, а значить, він за замовчуванням internal. Якщо ви спробуєте викрити властивість цього типу як public, воно не вийде. Ваш тип (клас) повинен мати той самий або більш високий доступ як ваш ресурс.

Детальніше про модифікатори доступу: http://msdn.microsoft.com/en-us/library/ms173121.aspx


8

Ваш Deliveryклас є внутрішнім (видимість за замовчуванням для класів), проте властивість (і, мабуть, містить клас) є загальнодоступною, тому властивість є більш доступною, ніж Deliveryклас. Вам потрібно або Deliveryоприлюднити, або обмежити видимість theliveryоб’єкту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.