Я пытаюсь заполнить список свойствами и строками - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь заполнить список именами и значениями свойств, вот мой код до сих пор ...

 public class DirPropeties { 
        public string Name { get; set; }
        public string Path { get; set; }
        public string HiddenStatus { get; set; }
    }
    public static List<string> GetDirAttributes(string path, bool IsHidden = true)
    {

        List<DirPropeties> FolderArrayList = new List<DirPropeties>();
        DirectoryInfo di = new DirectoryInfo(path);
        DirectoryInfo[] subdirectories = di.GetDirectories();
        foreach (DirectoryInfo dir in subdirectories)
        {
            if (IsHidden)
            {
                //FolderArrayList.Add(dir.Name);
                FolderArrayList.Add(new DirPropeties { Name = dir.Name });
            }
            else if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
            {
                FolderArrayList.Add(new DirPropeties { Name = dir.Name });
            }

        };

        return FolderArrayList;
    }

Я называю это так ....

  List<string> DirectoryArrayList = new List<string>();
  DirectoryArrayList = BaseDirectory.GetDirAttributes(FileDetailsViewModel.FolderPath, FileDetailsViewModel.AllowHidden);

и я пытаюсь получить доступ к таким свойствам, как ...

   if (folderIndex >= DirectoryArrayList.Count) { break; }
   var folder = DirectoryArrayList[folderIndex];
   var label = new Label()
   {
        Text = folder.Name,
        FontSize = 20,
        VerticalTextAlignment = TextAlignment.Center,
        HorizontalTextAlignment = TextAlignment.Center
   };

Я получаю следующую ошибку при возврате FolderArrayList ...

Невозможно неявное преобразование введите 'System.Collections.Generi c .List' в 'System.Collections.Generi c .List'

и в папке. Имя, которое я получаю при следующей ошибке ...

«строка» не содержит определения «Имя»

Может ли кто-нибудь помочь мне подсказать, что мне нужно сделать, чтобы решить эту проблему, пожалуйста?

1 Ответ

1 голос
/ 07 марта 2020

Нет необходимости использовать List<string> где-либо в этом коде. Измените

public static List<string> GetDirAttributes(string path, bool IsHidden = true)

на

public static List<DirPropeties> GetDirAttributes(string path, bool IsHidden = true)

Также измените

List<string> DirectoryArrayList = new List<string>();
DirectoryArrayList = BaseDirectory.GetDirAttributes(FileDetailsViewModel.FolderPath, FileDetailsViewModel.AllowHidden);

на

var DirectoryArrayList = BaseDirectory.GetDirAttributes(FileDetailsViewModel.FolderPath, FileDetailsViewModel.AllowHidden);

Вы также можете улучшить этот код

if (IsHidden)
{
   //FolderArrayList.Add(dir.Name);
    FolderArrayList.Add(new DirPropeties { Name = dir.Name });
}
else if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
{
    FolderArrayList.Add(new DirPropeties { Name = dir.Name });
}

до

if (IsHidden || (dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
{
    FolderArrayList.Add(new DirPropeties { Name = dir.Name });
}
...