Propriedade readonly protegida versus propriedade protegida
Eu tenho uma classe abstrata e gostaria de inicializar um campo readonly em seu construtor protegido. Eu gostaria que este campo readonly estivesse disponível em classes derivadas.
Seguindo o meu hábito de tornar todos os campos privados e expondo propriedades, eu implementei isto da seguinte maneira:
abstract class Foo
{
private readonly int _field;
protected Foo(int field)
{
_field = field;
}
protected int Field
{
get { return _field; }
}
}
Mas então me perguntei se há realmente muita vantagem em manter o campo privado aqui. Estou ciente das vantagens das propriedades e há várias perguntas sobre esse assunto em geral, mas elas se concentram em campos públicos em oposição aos protegidos.
Então, devo mudar para a implementação abaixo ou não? Quais são as considerações e vantagens / desvantagens de estar ciente em ambos os casos?
abstract class Foo
{
protected readonly int _field;
protected Foo(int field)
{
_field = field;
}
}