Cosa fare se si ha bisogno di avere uno schema certo che il nostro file di configurazione deve seguire? Che magari ci aiuti con il supporto dell'intellisense (gran bella invenzione davvero!) per mostrarci anche una lista di enumerati?

Semplice, associato al custom element della nostra custom section il parametro xmlns, passandogli un URI contenente lo schema XSD che vogliamo sia interpretato e utilizzato come linea guida. Così:

<UserSection xmlns="http://tempuri.org/PersoneSchema.xsd">

Generare uno schema XSD è semplice con il tool visuale messo a disposizione nell'IDE, basta solo sapere cosa scriverci dentro.

Il nostro pattern deve essere una cosa di questo tipo:

NomeSezione -> NomeElemento -> Attributi [-> Eventuali enumerati]

Che tradotto in xml, per un esempio sul quale stavo lavorando, diventa:

<xs:element name="Utente">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Persona">
        <xs:complexType>
          <xs:attribute name="nome">
            <xs:simpleType>
              <xs:restriction 
base="xs:string">
                <xs:enumeration 
value="Andrea"/>
                <xs:enumeration 
value="Giuseppe"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="cognome" type="xs:string"/>
          <xs:attribute name="sposato" type="xs:boolean"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>