Być może będzie to coś co wszyscy wiedzą, ale w C# możemy zdefiniować inną widoczność dla settera lub gettera danej property – i tak możemy mieć publiczny getter i chroniony (protected) setter. Dzięki temu ustawiać wartość będą mogły wszystkie klasy dziedziczące z naszej, natomiast odczytywać wartość będą mogli wszyscy. Co ciekawe, można ustawiać widoczność tylko dla setter’a lub getter’a. Gdy ustawimy dla obu dostaniemy błąd od kompilatora.

public string Field

{

    get

    {

        return field;

    }

    protected set

    {

        field = value;

    }

}