Utilizzo delle app nel livello DAL

Ho un’applicazione winform in cui alcuni dati sono archiviati in file XML. La posizione in cui questi file XML devono essere archiviati può essere configurata dall’utente e archiviata 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?

Quando provo a leggere le impostazioni dal mio livello DAL, ho riscontrato un altro problema

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

config.AppSettings [“DataStorageLocation”] restituisce un errore di compilazione: System.Configuration.ConfigurationElement.this [System.Configuration.ConfigurationProperty] non è accessibile a causa del relativo livello di protezione. Perché?

Qualcuno può mettermi sulla strada giusta? Grazie.

È necessario utilizzare config.AppSettings.Settings["DataStorageLocation"] . Vedere la documentazione MSDN per un esempio.

In alternativa, e IMHO meglio, è ansible 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.

AppSettings è accessibile a qualsiasi assembly caricato dal processo chiamante, quindi non avrai problemi ad accedervi con qualsiasi assembly che carichi.