void InternalGetFileSystemInfos(string searchPattern, SearchOption searchOption, List <FileSystemInfo> infos)
{
// UnauthorizedAccessExceptions might happen here and break everything for SearchOption.AllDirectories
string [] dirs = Directory.GetDirectories(FullPath, searchPattern);
string [] files = Directory.GetFiles(FullPath, searchPattern);
Array.ForEach <string> (dirs, (dir) => { infos.Add(new DirectoryInfo(dir)); });
Array.ForEach <string> (files, (file) => { infos.Add(new FileInfo(file)); });
if (dirs.Length == 0 || searchOption == SearchOption.TopDirectoryOnly)
{
return;
}
foreach (string dir in dirs)
{
DirectoryInfo dinfo = new DirectoryInfo(dir);
dinfo.InternalGetFileSystemInfos(searchPattern, searchOption, infos);
}
}