public void AddNewDescriptions(Func<string, string> callback)
        {
            var currentDirectory = Directory.GetCurrentDirectory();
            var files = Directory.GetFiles(currentDirectory);
            var directories = Directory.GetDirectories(currentDirectory);

            var filesShort = from file in files.Union( directories)
                             select (file.LastIndexOf(@"\") >= 0)
                                    ? file.Remove(0, file.LastIndexOf(@"\") + 1)
                                    : file;

            if (files.Length != 0)
            {
                if (Descriptions == null)
                {
                    Descriptions = new DirectoryDescriptionDictionary();
                }
            }
            else
            {
                return;
            }

            var newDescriptions = new DirectoryDescriptionDictionary();
            foreach (var file in filesShort)
            {
                var shouldCallback = ShouldCallback(file);
                string description = string.Empty;

                if (shouldCallback)
                {
                    description = callback(file);
                    newDescriptions.Add(file, description);
                }
                else
                {
                    if (this.Descriptions.ContainsKey(file))
                    {
                        newDescriptions.Add(file, this.Descriptions[file]);
                    }
                }
            }
            this.Descriptions = newDescriptions;
        }
 public bool TryLoadDescriptions(out DirectoryDescriptionDictionary descriptions)
 {
     try
     {
         DirectoryDescriptionDictionary loadedDescriptions = LoadDescriptions();
         descriptions = loadedDescriptions;
         this.Descriptions = descriptions;
         return true;
     }
     catch (Exception ex)
     {
         //Console.WriteLine(ex.ToString());
         descriptions = null;
         return false;
     }
 }