Sección de configuración personalizada en App.config C #


Soy un principiante bastante con las secciones de configuración en c #
Quiero crear una sección personalizada en el archivo de configuración. Lo que he intentado después de googlear es como sigue
Archivo de configuración:

    <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="MyCustomSections">
      <section name="CustomSection" type="CustomSectionTest.CustomSection,CustomSection"/>
    </sectionGroup>
  </configSections>

  <MyCustomSections>
    <CustomSection key="Default"/>
  </MyCustomSections>
</configuration>


CustomSection.cs

    namespace CustomSectionTest
{
    public class CustomSection : ConfigurationSection
    {
        [ConfigurationProperty("key", DefaultValue="Default", IsRequired = true)]
        [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)]
        public String Key
        {
            get { return this["key"].ToString(); }
            set { this["key"] = value; }
        }
    }
}


Cuando uso este código para recuperar la Sección, recibo un error que dice error de configuración.

var cf = (CustomSection)System.Configuration.ConfigurationManager.GetSection("CustomSection");


¿Qué me estoy perdiendo?
Gracias.

Editar
Lo que necesito en última instancia es

    <CustomConfigSettings>
    <Setting id="1">
        <add key="Name" value="N"/>
        <add key="Type" value="D"/>
    </Setting>
    <Setting id="2">
        <add key="Name" value="O"/>
        <add key="Type" value="E"/>
    </Setting>
    <Setting id="3">
        <add key="Name" value="P"/>
        <add key="Type" value="F"/>
    </Setting>
</CustomConfigSettings>

Respuestas a la pregunta(3)

Su respuesta a la pregunta