web-dev-qa-db-ja.com

一貫性のないアクセス可能性:プロパティタイプはアクセスしにくい

誰かが次のエラーで助けてください:

一貫性のないアクセシビリティ:プロパティタイプ「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(); }
        }
    }
}
79
David Bukera

クラス名の前に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(); }
        }
    }
}
182
Ravindra Bagale

クラスDeliveryにはアクセス修飾子がありません。つまり、デフォルトはinternalになります。その後、そのタイプのプロパティをpublicとして公開しようとすると、機能しません。タイプ(クラス)には、プロパティと同じ、またはそれ以上のアクセス権が必要です。

アクセス修飾子の詳細: http://msdn.Microsoft.com/en-us/library/ms173121.aspx

10
J. Steen

Deliveryクラスは内部(クラスのデフォルトの可視性)ですが、プロパティ(およびおそらく収容クラス)はパブリックなので、プロパティはDeliveryクラスよりもアクセスしやすくなっています。 Deliveryプロパティを公開するか、theliveryプロパティの可視性を制限する必要があります。

6
Lee