我正在调用给定示例中的方法,我将级别设置为10。 BasePath是一个没有任何子目录的目录,只有一个文件。
private void _FileInformationWorker_DoWork(object sender, DoWorkEventArgs e)
{
GetFilesAndFolders(BasePath, 10);
}
这是GetFilesAndFolders方法
Tuple<List<string>, List<string>> GetFilesAndFolders(string root, int depth)
{
List<string> folders = new List<string>();
List<string> files = new List<string>();
try
{
foreach (var directory in Directory.EnumerateDirectories(root))
{
folders.Add(directory);
if (depth > 0)
{
var result = GetFilesAndFolders(directory, depth - 1);
folders.AddRange(result.Item1);
files.AddRange(result.Item2);
}
}
files.AddRange(Directory.EnumerateFiles(root));
}
catch (Exception err)
{
}
return new Tuple<List<string>, List<string>>(folders, files);
}
最后,我在文件夹计数0和文件计数1中进入此示例。 但是如果我将深度设置为1,我也会得到相同的结果。 如果它是例如BasePath C:\我可以有超过10个级别来深入。
问题是如何设置用户在每种情况下可以设置的最高级别?在第一个示例中,只有1个级别,因此用户将使用10级别调用方法是不合逻辑的。在第二个例子C:\中,用户可以设置10级甚至更高级别。
我该如何处理?