【问题标题】:Check if an array of Directories exist and add the value to a corresponding array of keys in a configuration file检查是否存在目录数组并将值添加到配置文件中相应的键数组
【发布时间】:2015-08-05 10:13:57
【问题描述】:
        string[] userDirectoryInput = {userSourceDirectory, userDefaultDestination, userArchiveDestination, userDocumentDestination, userImageDestination, userMusicDestination, userVideoDestination};
        string[] directorySettings = { "SourceFolder", "DefaultFolder", "ArchiveFolder", "DocumentFolder", "ImageFolder", "MusicFolder", "VideoFolder" };

        Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);

        foreach(string input in userDirectoryInput) 
        {
            if(Directory.Exists(input)) 
                {
                   //soemthing like this
                   config.AppSettings.Settings[directorySettings].Value = input;


                }
                else 
                    {
                    MessageBox.Show(input + " is not a valid directory.", "Directory Error");
                    } 
        }
        config.Save(ConfigurationSaveMode.Modified);

userDirectoryInput 是一个目录数组。 directorySettings 是一个键名数组。

我想检查目录是否有效并在对应键中输入值(首先在第一个目录设置中的 userDirectoryInput 中,第 5 和第 5 等)

【问题讨论】:

    标签: c# arrays visual-studio configuration key


    【解决方案1】:

    为什么不创建类?程序员通常不会简单地创建一个类来解决此类问题,并通过多个晦涩的列表使事情复杂化。

    public class Entry
    {
       public string Directory { get; set; }
       public string SettingName {get; set;}
       public bool Exists {get; private set;}
    
       public bool CheckDirectory(Configuration config){
            if (Directory.Exists(Directory ) ){
              config.AppSettings.Settings[directorySettings].Value = Directory;
              Exists = true;
              return true;
            }
            else{
              Exists = false;
              return false;
            }
       }
    }
    

    然后遍历这些条目的列表..

    Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
    
    foreach(Entry entry in listOfEntries) 
    {
       if ( entry.CheckDirectory(config) == false ){
         //handle error
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多