2010-09-24 3 views
0

Каким будет тип возврата следующего метода? (T)Тип данных дерева каталогов?

public T GetDirectoryContentsRecursively (string path) { ... } 

метод будет читать содержимое удаленного каталога, и прочитать содержимое каждой поддиректории и каждый из подкаталогов этого объекта и так далее.

Я думал об использовании List<object>, где object может быть другой List<object> и т.д ... но я не хочу, вызывающие должен быть литьем все в FileSystemInfo сек каждый раз, когда они хотят использовать этот метод.

Каждый файл должен быть FileInfo и каждый каталог a DirectoryInfo, оба из которых наследуют абстрактный класс FileSystemInfo.

Я просто не могу понять, какой тип данных лучше всего использовать для представления этого.

Любые идеи? Нужно ли мне создавать свой собственный тип DirectoryTree?

Редактировать: Данные должны быть получены с сервера, возможно, по каталогу, по одному. Что мне нужно сделать, это взять эти данные и восстановить его в что-то, которое я могу передать пользователю. Это означает, что я не могу просто передать DirectoryInfo, а затем вызвать его GetFileSystemInfos(), потому что Directory не будет существовать на локальной машине.

ответ

1

Я думаю, что, возможно, подход неправильный, чего вы пытаетесь достичь с помощью древовидной структуры, которую вы не можете использовать с помощью каталога API, как и когда вам нужно?

Если вы намерены просто перемещаться по папке/файловой структуре в удаленном каталоге, тогда вам не нужно создавать собственное представление в памяти для этого. Если вы создаете структуру, просто возьмите верхний уровень и загрузите другие уровни по требованию.

Если вы действительно хотите спуститься по этому маршруту, вы можете просто вернуть IEnumerable<string> со всеми каталогами и файловыми путями. DirectoryInfo и FileInfo - относительно дорогие объекты. Все зависит от цели, вы можете дать больше информации?

+0

Я не могу просто вернуть 'IEnumerable ', потому что я хочу передавать другую информацию, такую ​​как размер каждого файла, когда он был изменен и т. Д. Возможно, вы правы со своим вторым абзацем и что я не знаю, Мне нужен этот метод вообще. У меня уже есть 'public IEnumerable GetDirectoryContents (строковый путь)'. – Nobody

+0

Я предполагаю, что я думал, что когда у вас есть список путей к файлам, вы можете использовать API-интерфейсы «Файл» и «Каталог» для поиска размера и информации об атрибутах по мере необходимости. Опять же, это зависит от цели. – TheCodeKing

0

попробовать что-то вроде этого:

класс MySweetObject {
HashSet fileInfoSet;
HashSet directoryInfoSet;
// Логика, необходимые для работы с файлами, как вы считаете нужным
// Логика, необходимые для доступа к файлам, как вы считаете нужным
}

Затем написать:

общественного MySweetObject GetDirectoryContentsRecursively (string path) {...}

Создайте пользовательский объект и передайте его вызывающему.

+0

любая конкретная причина для downvote? – Woot4Moo

Смежные вопросы