Rekursiva funktioner brukar vara hjälpsamma i dessa lägen, dock vet jag inte om en flerdimensions array är bästa lösningen, arbetade förut med en form av katalogsystem där vi i stället för att använda en array använde två object, själva objektet innehållandes information, namn, beskrivning, etc; samt en collection. Såg ut ungefär så här:
class Katalog
{
public string Name;
public string Beskrivning;
public KatalogCollection Kataloger;
public Katalog(string path)
{
// hämta underkataloger
Kataloger = new KatalogCollection(path);
}
}
class KatalogCollection : CollectionBase
{
// ...
public KatalogCollection(string path)
{
// iterera genom katalogerna som finns tillgängliga och lägg till i Collection
foreach(string catpath in GetCatalogs())
List.Add(new Katalog(catpath);
}
}
Används sedan enligt förljande:
Katalog root = new Katalog("c:\\");
string first = root.Kataloger[0].Namn; // första katalogen.
foreach(string catpath in GetCatalogs())
List.Add(new Katalog(catpath));
Fel: The name 'GetCatalogs' does not exist in the class or namespace 'ASPXGalleri.KatalogCollection'
He, GetCatalogs var bara för att illustrera att det skulle vara en funktion för att hämta kataloger där. Om du vill ha en som fungerar så kika i System.IO namnutrymmet.
Katalog root = new Katalog(Server.MapPath(ImageFolder));
error.Text = root.Kataloger[0].Namn;
Fel: Cannot apply indexing with [] to an expression of type 'ASPXGalleri.KatalogCollection'
public class Katalog
{
public string Name;
public string Beskrivning;
public KatalogCollection Kataloger;
public Katalog(string path)
{
Kataloger = new KatalogCollection(path);
}
}
public class KatalogCollection : CollectionBase
{
public KatalogCollection(string path)
{
foreach(string catpath in Directory.GetDirectories(path))
List.Add(new Katalog(catpath));
}
}