Как отобразить элементы DriveItems Microsoft Graph с помощью дерева Spectre.Console, используя дельта-ответ?C#

Место общения программистов C#
Anonymous
Как отобразить элементы DriveItems Microsoft Graph с помощью дерева Spectre.Console, используя дельта-ответ?

Сообщение Anonymous »

Я пишу программу, которая должна переносить файлы с определенного диска в Sharepoint на другой. Прежде чем сказать, когда вы увидите мой код, я знаю, что сейчас есть лучшие способы сделать это, но из-за определенных обстоятельств я здесь. Я также новичок в C# — большая часть моего программирования была написана на C++, Rust и Python.
Я использую пакет 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]

Вернуться в «C#»