Accesibilidad inconsistente: el tipo de propiedad es menos accesible

100

Alguien puede ayudar con el siguiente error:

Accesibilidad inconsistente: el tipo de propiedad 'Test.Delivery' es menos accesible que la propiedad 'Test.Form1.thelivery'

private Delivery thedelivery;

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

No puedo ejecutar el programa debido al mensaje de error de inconsistencia.

Aquí está mi clase 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
fuente

Respuestas:

211

Declare su clase con un publicmodificador de acceso agregando la publicpalabra clave delante del nombre de la clase

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
fuente
0 voto en contraacepto lo siento, ¿podría decirme cómo hacer que mi clase sea un modificador de acceso público?
David Bukera
@DavidBukera: creo que lo
entendiste
5
Mi solución fue ELIMINAR public de mi definición de clase.
Cody
12

Tu clase Deliveryno tiene modificador de acceso, lo que significa que tiene el valor predeterminado internal. Si luego intenta exponer una propiedad de ese tipo como public, no funcionará. Su tipo (clase) debe tener el mismo o mayor acceso que su propiedad.

Más sobre modificadores de acceso: http://msdn.microsoft.com/en-us/library/ms173121.aspx

J. Steen
fuente
8

Su Deliveryclase es interna (la visibilidad predeterminada para las clases), sin embargo, la propiedad (y presumiblemente la clase que la contiene) es pública, por lo que la propiedad es más accesible que la Deliveryclase. Debe hacer Deliverypúblico o restringir la visibilidad de la theliverypropiedad.

Sotavento
fuente