public FileSystemInfo[] GetFileSystemInfos(string searchPattern, SearchOption searchOption) { if (Common.IsRunningOnMono()) { #if NET_4_0 || NET_4_5 return(SysDirectoryInfo.GetFileSystemInfos(searchPattern, searchOption).Select(s => s.FullName).Select(e => Directory.Exists(e) ? (FileSystemInfo) new DirectoryInfo(e) : (FileSystemInfo) new FileInfo(e)).ToArray()); #else //throw new NotImplementedException("This function is not supported in "); var fileInfos = SysDirectoryInfo.GetFiles(searchPattern); var directories = SysDirectoryInfo.GetDirectories(searchPattern); List <FileSystemInfo> fileSystemInfos = new List <FileSystemInfo>(); foreach (System.IO.FileInfo fsi in fileInfos) { fileSystemInfos.Add(new FileInfo(fsi.FullName)); } foreach (System.IO.DirectoryInfo fsi in directories) { fileSystemInfos.Add(new DirectoryInfo(fsi.FullName)); } if (searchOption != SearchOption.AllDirectories) { return(fileSystemInfos.ToArray()); } foreach (var di in SysDirectoryInfo.GetDirectories()) { fileSystemInfos.AddRange(new DirectoryInfo(di.FullName).GetFileSystemInfos(searchPattern, searchOption)); } return(fileSystemInfos.ToArray()); #endif } return(Directory.EnumerateFileSystemEntries(FullPath, searchPattern, true, true, searchOption) .Select(e => Directory.Exists(e) ? (FileSystemInfo) new DirectoryInfo(e) : (FileSystemInfo) new FileInfo(e)).ToArray()); }