2011-01-10 16 views
8

Ben şu var: CommomSettings.Default olduğunu türüne bağlıC#: Başka bir meclisten kullanmaya çalışmadan önce bir ayar değişkeninin varlığından nasıl emin olunur?

using CommonSettings = MyProject.Commons.Settings; 

public class Foo 
{ 
    public static void DoSomething(string str) 
    { 
     //How do I make sure that the setting exists first? 
     object setting = CommonSettings.Default[str]; 

     DoSomethingElse(setting); 
    } 
} 
+0

https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx –

cevap

5

, basit bir boş çek iyi olmalı:

if(setting != null) 
    DoSomethingElse(setting); 

ayarı alınmaya çalışılırken ÖNCE kontrol etmek istiyorsanız, ihtiyacınız CommonSettings.Default Türünü yayınlamak için - Eğer biraz daha gidip deneyebilirsiniz

public static void DoSomething(string str) 
{ 
    object setting = null; 

    Try 
    { 
     setting = CommonSettings.Default[str]; 
    } 
    catch(Exception ex) 
    { 
     Console.out.write(ex.Message); 
    } 

    if(setting != null) 
    { 
     DoSomethingElse(setting); 
    } 
} 

Bu ayar var sağlayacak: Aşağıdaki yapabilirdi

if(CommonSettings.Default.ContainsKey(str)) 
{ 
    DoSomethingElse(CommonSettings.Default[str]); 
} 
+0

ben o daha ayar sadece için, mevcut olduğunu _ensure_ nasıl soruyordu düşünce mevcut olup olmadığını kontrol edin. –

+1

@Uwe - Haklı olabilirsiniz. OP'nin sorusundaki ifadelerden anlayamadım. Bu dava için de bir şey ekledim. –

+1

Ancak bir Settings.settings dosyası inşa edilmiştir ... Ben bir CommonSettings.Default.ContainsKey (...) 'dan beri bir sözlük türü olduğunu düşünmüyorum intellisense içinde değil. – michael

0

: paçayı mümkün olabilir böylece bir Dictionary benziyor ve kesin excetion yakalamak - örneğin yakalamak (IndexOutOfBoundsException ex)

+0

Sadece güncellemenizi gördünüz Justin - Çözümünüz allot cleaner görünüyor :) – GaryT

5

Bu onunla nasıl başa geçerli:

if(CommonSettings.Default.Properties[str] != null) 
{ 
    //Hooray, we found it! 
} 
else 
{ 
    //This is a 'no go' 
} 
6
try 
{ 
    var x = Settings.Default[bonusMalusTypeKey]); 
} 
catch (SettingsPropertyNotFoundException ex) 
{ 
    // Ignore this exception (return default value that was set) 
} 
+0

Bazı açıklamalar yararlı olacaktır! – Parris

15

SettingsPropertyCollection kullanıyorsanız, hangi ayarların kendiniz olduğunu kontrol etmelisiniz.

private bool DoesSettingExist(string settingName) 
{ 
    return Properties.Settings.Default.Properties.Cast<SettingsProperty>().Any(prop => prop.Name == settingName); 
} 
+1

thx salle55. harika iş. System.Configuration kullanarak olmayanlar için lütfen önek System.Configuration ekleyin. SettingsProperty için> – gg89

İlgili konular