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


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 voteaccept申し訳ありませんが、私のクラスをパブリックアクセス修飾子にする方法を教えてください
David Bukera

@DavidBukera:わかったと思う
Ravindra Bagale

5
私の解決策は、クラス定義から削除 publicすることでした。
Cody

12

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

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


8

あなたのDeliveryクラスは、内部にある(クラスのデフォルトの可視性)特性がよりアクセス可能ですので、しかし、プロパティ(およびおそらく含んでいるクラス)は、公開されDeliveryたクラス。プロパティをDelivery公開するか、theliveryプロパティの表示を制限する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.