Я использую пакет Nu-Get Spectre.Console, чтобы создать небольшой Графический интерфейс, поэтому визуальные эффекты стали лучше, особенно при попытке отобразить библиотеку папок или документов. Однако показать это в правильном порядке было проблемой. Теперь я знаю, что это классический случай рекурсии. Какая возможность может быть лучше, не так ли? Возможно.
Я использую DeltaGetResponse библиотеки документов для создания дерева, и я думаю, что это, вероятно, проблема, хотя бы из-за того, как он передает список библиотеки. До сих пор я начал это как итеративный процесс, и, вероятно, именно здесь все мои шарики потерялись: я катался по полу в панике, пытаясь понять, где я нахожусь во всем этом.
Вот моя вопиюще выглядящая функция. Я прекрасно понимаю, что это слишком занято и сложно, не говоря уже о том, что неправильно.
Код: Выделить всё
private void getDisplayTree(string documentLibrary, DeltaGetResponse deltaResponse)
{
// Setup initial Tree
var root = new Tree($"{documentLibrary}").Style("white on red").Guide(TreeGuide.Line);
// Get total count of folder and files in Library
var totalCount = deltaResponse.Value.Count;
// Work with just the list of DriveItems
var totalFiles = deltaResponse.Value;
// Initialize to false and zero
bool hasChildren = false;
bool isAFile = false;
bool isAFolder = false;
int childCount = 0;
// Initialize nodes
TreeNode rootFolder = null;
TreeNode parentFolders = null;
TreeNode subFolders = null;
// Go through each driveItem and skip root
for (int i = 1; i < totalCount; i++)
{
// Check if driveItem has children -- indicating a folder
hasChildren = thereAreChildren(totalFiles[i]);
// If not,
if (!hasChildren)
{
// Add node
rootFolder = root.AddNode(totalFiles[i].Name);
continue;
}
else
{
// Get child count
childCount = (int)getChildCount(totalFiles, i);
// Add node
rootFolder = root.AddNode(totalFiles[i].Name);
}
// Continue to deal with folders or files
for (int j = 1; j
Подробнее здесь: [url]https://stackoverflow.com/questions/78713306/how-to-display-microsoft-graph-driveitems-with-a-spectre-console-tree-using-a-de[/url]