无法将类型为'System.IO.FileSystemInfo []'的对象强制转换为'System.Collections.Generic.IEnumerable`1 [System.IO.DirectoryInfo]

时间:2016-02-10 11:21:09

标签: c#

我在PCL中遇到以下方法的强制转换错误,我在遗留类库中没有任何问题。

    protected FolderInfo GetFolderInfo(string folderPath, int level = 0)
    {
        FolderInfo folderInfo = new FolderInfo(folderPath);

        if (settings.MaxDepthLevel == 0 || level < settings.MaxDepthLevel)
        {
            try
            {
                DirectoryInfo currentDirectoryInfo = new DirectoryInfo(folderPath);

                foreach (DirectoryInfo directoryInfo in currentDirectoryInfo.GetDirectories())
                {
                    if (settings.SkipHiddenFolders && directoryInfo.Attributes.HasFlag(FileAttributes.Hidden))
                    {
                        continue;
                    }

                    FolderInfo subFolderInfo = GetFolderInfo(directoryInfo.FullName, level + 1);
                    folderInfo.Folders.Add(subFolderInfo);
                    subFolderInfo.Parent = folderInfo;
                }

                foreach (FileInfo fileInfo in currentDirectoryInfo.EnumerateFiles())
                {
                    if (settings.SkipHiddenFiles && fileInfo.Attributes.HasFlag(FileAttributes.Hidden))
                    {
                        continue;
                    }

                    folderInfo.Files.Add(fileInfo);
                }

                folderInfo.Files.Sort((x, y) => x.Name.CompareTo(y.Name));
            }
            catch (UnauthorizedAccessException)
            {
            }
        }

        return folderInfo;
    }

我收到以下错误: Exception thrown: 'System.InvalidCastException' in System.IO.FileSystem.dll - Additional information: Unable to cast object of type 'System.IO.FileSystemInfo[]' to type  System.Collections.Generic.IEnumerable`1[System.IO.DirectoryInfo]'.

  

抛出异常:System.IO.FileSystem.dll中的'System.InvalidCastException'   附加信息:无法将类型为'System.IO.FileSystemInfo []'的对象强制转换为'System.Collections.Generic.IEnumerable`1 [System.IO.DirectoryInfo]'。

在PCL中,我可以用不同的方式在“工作”代码上面写这个不同的行为吗?

谢谢和最诚挚的问候 迈克尔

1 个答案:

答案 0 :(得分:0)

  

Windows Phone应用程序不使用操作的文件系统   系统并限制使用隔离存储来保持和   访问文件,因此此命名空间不提供任何其他内容   功能。

http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.io%28v=vs.105%29.aspx

您还应该看看这个SO answer.