Tutarsız erişilebilirlik: mülk türüne daha az erişilebilir


100

Lütfen birisi aşağıdaki hatayla ilgili yardımcı olabilir:

Tutarsız erişilebilirlik: 'Test.Delivery' özellik türü, 'Test.Form1.thelivery' özelliğinden daha az erişilebilir durumda

private Delivery thedelivery;

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

Tutarsızlık hata mesajı nedeniyle programı çalıştıramıyorum.

İşte teslimat sınıfım:

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

Yanıtlar:


211

publicBunun yerine publicanahtar kelimeyi sınıf adının önüne ekleyerek sınıfınızı bir erişim değiştiriciyle bildirin

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

Oylama kabul ediyorum üzgünüm, sınıfımı nasıl genel erişim değiştiriciye çevireceğimi söyler misiniz
David Bukera

@DavidBukera: Sanırım anladın
Ravindra Bagale

5
Benim çözümüm sınıf tanımımdan KALDIRMekti public .
Cody

12

Sınıfınızın Deliveryerişim değiştiricisi yok, yani varsayılan değerdir internal. Daha sonra bu türden bir özelliği göstermeye çalışırsanız publicçalışmaz. Türünüzün (sınıfınızın) mülkünüzle aynı veya daha yüksek erişime sahip olması gerekir.

Erişim değiştiriciler hakkında daha fazla bilgi: http://msdn.microsoft.com/en-us/library/ms173121.aspx


8

Kişisel Deliverymülkiyet daha erişilebilir, böylece sınıf (sınıflar için varsayılan görünürlük), ancak mülkiyet (ve muhtemelen içeren sınıfı) iç olduğunu halka açıktır Deliverysınıfa. Ya Deliveryhalka açmanız ya da theliverymülkün görünürlüğünü kısıtlamanız gerekir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.