Pregunta

¿Por qué es posible utilizar un inicializador de objeto para establecer una propiedad automática de conjunto privado, cuando el inicializador se llama desde la clase propietaria de la propiedad automática?He incluido dos clases como ejemplo.

public class MyClass
{
    public string myName { get; private set; }
    public string myId { get; set; }

    public static MyClass GetSampleObject()
    {
        MyClass mc = new MyClass
        {
            myName = "Whatever", // <- works
            myId = "1234"
        };
        return mc;
    }


}

public class MyOtherClass
{
    public static MyClass GetSampleObject()
    {
        MyClass mc = new MyClass
        {
            myName = "Whatever", // <- fails
            myId = "1234"
        };
        return mc;
    }
}
¿Fue útil?

Solución

El private modificador en un setter significa: privado para el tipo adjunto.

Es decir, la propiedad sólo puede establecerse mediante el tipo que la contiene.

Si este no fuera el caso, nunca podría establecer la propiedad y efectivamente sería de solo lectura.

Desde MSDN- privado (Referencia C#):

Los miembros privados son accesibles sólo dentro del cuerpo de la clase o la estructura en la que están declarados.

Otros consejos

Porque los medios privados accesibles dentro de la clase que posee la propiedad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top