2010-01-03 14 views
5

Bazı verilerin XML dosyalarında saklandığı bir winforms uygulamasına sahibim. Bu XML dosyalarının depolanması gereken yer kullanıcı tarafından yapılandırılabilir ve AppSettings'de saklanır. Tüm katmanlarım, ayrı montajlardır. Ayarlarıma DAL grubumdan erişebilir miyim veya bunu tüm katmanlarımdan bir argüman olarak mı iletmeliyim? Uygulama katmanlarını DAL katmanında kullanma

benim DAL katmanından ayarları okumaya çalışırım

, başka bir sorunu

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

config.AppSettings karşılaşmak [ "DataStorageLocation"] Bir derleme hatası verir: System.Configuration.ConfigurationElement.this [Sistemi. Configuration.ConfigurationProperty] koruma düzeyi nedeniyle erişilemiyor. Neden?

Birisi beni doğru yola sokabilir mi? Teşekkürler.

cevap

8

config.AppSettings.Settings["DataStorageLocation"] kullanmanız gerekir. Örnek için the MSDN documentation adresine bakın.

Alternatif olarak ve IMHO daha iyi, ana makine uygulamasının AppSettings'lerine erişmek için System.Configuration.ConfigurationManager.AppSettings[name] kullanabilirsiniz. Bu muhtemelen tekniğinizden daha esnektir, çünkü DAL topluluğunuz, örneğin, IIS'de bir hizmet katmanında barındırılıyorsa da çalışır. Yapılandırma bilgilerinin ana bilgisayar uygulamasının yapılandırma dosyasından doğrudan bu şekilde erişilmesi tamamen kabul edilebilirdir ve genellikle yapılandırma bilgilerini katmanlardan geçirmekten daha iyidir.

+0

Aynı hatayı alıyordum ... Bu özel yapılandırma dosyasında AppSettings bölümünde tanımlanan bir değere erişmek için özel bir yapılandırma dosyası kullanıyorum: string val = config.AppSettings.Settings ["OpMode "] .Value. Teşekkürler. Joe'nun yanıtını gerçekten tamamlamak için – RDV

3

AppSettings, çağrı işlemi tarafından yüklenen herhangi bir derleme tarafından erişilebilir, bu nedenle yüklediğiniz herhangi bir derlemeyle erişirken sorun yaşamayacaksınız.

+1

+1. Sağol Darien. – Peter

İlgili konular