Acessibilidade inconsistente: o tipo de propriedade é menos acessível

100

Alguém pode ajudar com o seguinte erro:

Acessibilidade inconsistente: o tipo de propriedade 'Test.Delivery' é menos acessível do que a propriedade 'Test.Form1.thelivery'

private Delivery thedelivery;

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

Não consigo executar o programa devido à mensagem de erro de inconsistência.

Aqui está minha aula de entrega:

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

Respostas:

211

Declare sua classe com um publicmodificador de acesso, em vez de adicionar a publicpalavra - chave na frente do nome da classe

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(); }
        }
    }
}
Ravindra Bagale
fonte
0down voteaccept desculpe, você pode me dizer como fazer minha aula para o modificador de acesso público
David Bukera
@DavidBukera: acho que você entendeu
Ravindra Bagale
5
Minha solução foi REMOVER public da minha definição de classe.
Cody
12

Sua classe Deliverynão tem modificador de acesso, o que significa que o padrão é internal. Se você tentar expor uma propriedade desse tipo como public, não funcionará. Seu tipo (classe) precisa ter o mesmo acesso ou acesso superior à sua propriedade.

Mais sobre modificadores de acesso: http://msdn.microsoft.com/en-us/library/ms173121.aspx

J. Steen
fonte
8

Sua Deliveryclasse é interna (a visibilidade padrão para classes), no entanto, a propriedade (e provavelmente a classe que a contém) são públicas, portanto, a propriedade é mais acessível do que a Deliveryclasse. Você precisa tornar Deliverypúblico ou restringir a visibilidade da theliverypropriedade.

Lee
fonte