Campo de solo lectura protegido contra propiedad protegida

Tengo una clase abstracta y me gustaría inicializar un campo de solo lectura en su constructor protegido. Me gustaría que este campo de solo lectura esté disponible en clases derivadas.

Siguiendo mi costumbre de hacer todos los campos privados y exponer propiedades, implementé esto de la siguiente manera:

abstract class Foo
{
    private readonly int _field;

    protected Foo(int field)
    {
        _field = field;
    }

    protected int Field
    {
        get { return _field; }
    }
}

Pero luego me pregunté si realmente hay muchas ventajas de mantener el campo privado aquí. Soy consciente de las ventajas de las propiedades y hay varias preguntas de SO sobre este tema en general, pero se centran en campos públicos en lugar de protegidos.

Entonces, ¿debería cambiar a la siguiente implementación o no? ¿Cuáles son las consideraciones y ventajas / desventajas a tener en cuenta en ambos casos?

abstract class Foo
{
    protected readonly int _field;

    protected Foo(int field)
    {
        _field = field;
    }
}

Respuestas a la pregunta(7)

Su respuesta a la pregunta