2010-01-03 4 views
5

Ho un'applicazione winform in cui alcuni dati sono archiviati in file XML. L'ubicazione in cui devono essere archiviati questi file XML può essere configurata dall'utente e memorizzata in AppSettings. Tutti i miei strati sono assiemi separati. Posso accedere alle mie impostazioni dal mio assembly DAL o devo passare questo argomento come argomento attraverso tutti i miei livelli?Uso delle impostazioni app nel livello DAL

Quando cerco di leggere le impostazioni dal mio strato DAL, ho incontrato un altro problema

 Configuration config = ConfigurationManager.OpenExeConfiguration(
      System.Reflection.Assembly.GetEntryAssembly().Location); 
     string dataStorageLocation = config.AppSettings["DataStorageLocation"]; 

config.AppSettings [ "DataStorageLocation"] dà un errore di compilazione: System.Configuration.ConfigurationElement.this [Sistema. Configuration.ConfigurationProperty] non è accessibile a causa del suo livello di protezione. Perché?

Qualcuno può mettermi sulla strada giusta? Grazie.

risposta

8

È necessario utilizzare config.AppSettings.Settings["DataStorageLocation"]. Vedere the MSDN documentation per un campione.

In alternativa, e IMHO meglio, è possibile utilizzare System.Configuration.ConfigurationManager.AppSettings[name] per accedere a AppSettings dell'applicazione host. Questo è probabilmente più flessibile della tua tecnica, in quanto funziona anche se l'assembly DAL è, ad esempio, ospitato in un livello di servizio su IIS. Accedere alle informazioni di configurazione dal file di configurazione dell'applicazione host direttamente in questo modo è perfettamente accettabile e generalmente meglio che passare le informazioni di configurazione attraverso i livelli.

+0

Stavo ottenendo lo stesso errore .. Sto usando un file di configurazione personalizzato, per accedere a un valore definito nella sezione AppSettings in questo file di configurazione personalizzato ho dovuto usare il seguente: stringa val = config.AppSettings.Settings ["OpMode "].Valore. Grazie. – RDV

3

AppSettings sono accessibili a qualsiasi assembly caricato dal processo chiamante, quindi non avrete problemi ad accedere a qualsiasi assembly caricato.

+1

+1 per rendere la risposta di Joe davvero completa. Grazie, Darien. – Peter