【问题标题】:I am trying to populate a list with properties and strings我正在尝试使用属性和字符串填充列表
【发布时间】:2020-06-20 01:22:15
【问题描述】:

我正在尝试使用属性名称和值填充列表,这是我目前的代码...

 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.Generic.List”隐式转换为“System.Collections.Generic.List”

在文件夹中。名称我得到以下错误...

“字符串”不包含“名称”的定义

谁能帮助指导我如何解决这个问题?

【问题讨论】:

  • GetDirAttributes() 应该返回 List&lt;DirPropeties&gt; 而不是 List&lt;string&gt;DirectoryArrayList 有同样的问题。也应该是List&lt;DirPropeties&gt;

标签: c# generic-collections system.io.directory


【解决方案1】:

无需在此代码中的任何位置使用List&lt;string&gt;。改变

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 });
}

【讨论】:

  • 太棒了,谢谢,就像一个魅力,只是最后一部分的一件事,它仍然需要显示没有隐藏标志值的文件夹,所以我假设我仍然需要 else 部分?
  • 没关系,我测试了它,在测试之前讲过 :-) 我现在对逻辑有了更好的理解,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多