Asymmetric Accessor Accessibility (C#)

Spesso si dimentica che i metodi get e set di una propery possono essere “asimmetrici”. 

Siamo tutti abituati (colpa degli snippets di codice?) a settare le proprietà in questo modo:

   1: public string Name
   2: {
   3:     get { return name; }
   4:     set { name = value; }
   5: }

Ma nulla ci impedisce di fare una cosa del tipo:

   1: public string Name
   2: {
   3:     get { return name; }
   4:     protected set { name = value; }
   5: }

A me personalmente non piace un gran chè, ma spesso può tornare utile. 

The get and set portions of a property or indexer are called accessors. By default these accessors have the same visibility, or access level: that of the property or indexer to which they belong. For more information, see accessibility levels. However, it is sometimes useful to restrict access to one of these accessors. Typically, this involves restricting the accessibility of the set accessor, while keeping the get accessor publicly accessible

Fonte: Asymmetric Accessor Accessibility (C#)