Нет, Microsoft говорит, публично видимые участники должны отличаться больше, чем просто случай:
Это правило действует только для публично видимых участников.
(Это включает защищенные члены, так как они видимы для производных классов.)
Так что это нормально:
public class Foo
{
private string bar;
public string Bar { get { return bar; } }
}
Мое личное правило - не разрешать какие-либо другие личные поля в любом случае, и в этот момент это не проблема.
Вам действительно нужны защищенные поля? Как насчет того, чтобы свойство имело защищенный установщик, если вы хотите иметь возможность изменять его из производных классов?