Buongiorno a tutti.
Qualcuno saprebbe indicarmi un link ( qualsiasi cosa) dove viene spiegato come gestire le sezioni di configurazione personalizzate per un'applicazione .Net Framework?
Nello specifico, io ho una classe che ha bisogno di determinati parametri.
Ho creato una sezione personalizzata nel file app.config ma mi sono bloccato sulla sua configurazione, nello specifico:
<configSections>   
    <section name="EmailSender" type="MyConfigSectionHandler.MyHandler, MyCustomConfigurationHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
        allowLocation="true"
        allowDefinition="Everywhere"
      />
  </configSections>
  <appSettings>
    ...rimosso per brevità
  </appSettings>
  <EmailSender>
    <add key ="SMTPServerName" value=""/>
    <add key ="SMTPUserName" value=""/>
    <add key ="SMTPPassword" value=""/>
    <add key ="SMTPPort" value=""/>
    <add key ="SenderAddress" value="/>
    <add key ="AuthenticationType" value=""/>
  </EmailSender>


non so quali passi seguire per configurare il campo "type" ed i campi Version, Culture, PublicKeyToken all'interno del configSections.
Sul sito di microsoft non sono riuscito a capire come fare.
Grazie!
Ciao!
Questo metodo è un po macchinoso ma è quello che uso io.. scrivo tutti i passaggi poi magari buona parte li hai già fatti o non ti servono:

Prima creo una classe che implementa le proprietà che scriverò nel file di configurazione:

  public class EmailSender
    {
        public string SMTPServerName { get; set; }
        public string SMTPUserName { get; set; }
    }


Poi creo una classe che deriva dal Configuration.Elements per permettere la lettura dal file di configurazione specificando nel file direttamente i nomi delle mie proprietà ( tipo <SMTPServerName>MioValore</SMTPServerName> )

  public class EmailSenderElement : ConfigurationElement
    {
        public string InnerText { get; private set; }

        protected override void DeserializeElement(XmlReader reader, bool serializeCollectionKey)
        {
            InnerText = reader.ReadElementContentAsString();
        }
    }


Poi creo una classe che mi permette di mappare dalla sezione del f ile di configurazione alla classe che utilizzerò nel codice


 public class EmailSenderSection : ConfigurationSection
    {
        [ConfigurationProperty("SMTPServerName")]
        public EmailSenderElement SMTPServerName
        {
            get { return this["SMTPServerName"] as EmailSenderElement; }
            set { this["SMTPServerName"] = value; }
        }

        [ConfigurationProperty("SMTPUserName")]
        public EmailSenderElement SMTPUserName
        {
            get { return this["SMTPUserName"] as EmailSenderElement; }
            set { this["SMTPUserName"] = value; }
        }

        public EmailSender CreateEmailSenderFromConfig()
        {
            return new EmailSender()
            {
                SMTPServerName = this.SMTPServerName.InnerText,
                SMTPUserName = this.SMTPUserName.InnerText,
            };
        }
    }


Mi assicuro che il file di configurazione sia nel formato corretto:
Attenzione nel type della section deve esserci il nome del tuo progetto e della classe che va a mappare la section con la tua classe

<configuration>
  <configSections>
    <sectionGroup name="ApplicationConfiguration">
      <section name="EmailSender" type="WinFormsApp1.EmailSenderSection, WinFormsApp1" />
    </sectionGroup>
  </configSections>
  <ApplicationConfiguration>
    <EmailSender>
      <SMTPServerName>1</SMTPServerName>
      <SMTPUserName>2</SMTPUserName>
    </EmailSender>
  </ApplicationConfiguration>  
</configuration>



Infine nel codice richiamo i valori con il codice seguente
   EmailSenderSection config = (EmailSenderSection)ConfigurationManager.GetSection("ApplicationConfiguration/EmailSender");
    EmailSender emailSender = config.CreateEmailSenderFromConfig();


Spero possa esserti utile!
Fammi Sapere!
Maurizio
Ciao Maurizio, grazie mille, nei prossimi giorni provo.
E' quello che cercavo. da una veloce occhiata, mi mancava sicuramente qualche passaggio.
Ti aggiorno e grazie ancora!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.