16. marts 2007 - 08:09Der er
10 kommentarer og 1 løsning
IEnumerable og klasse med generic dictionary
I uddrag har jeg følgende kode:
using System.Collections.Generic; public class Aktiviteter { private Dictionary aktiviteter<string, Aktivitet> aktiviteter;
public Aktiviteter() { aktiviteter = new Dictionary<string, Aktivitet>(); } }
public class Aktivitet { private string navn; public string Navn { get { return navn; } set { navn = value; } } }
Jeg vil gerne kunne loop'e klassen Aktiviteter's dictionary af aktiviteter med en foreach. Selve loop'et foregår et andet sted end inde i selve klassen. Jeg har en fornemmelse af, at jeg skal implementere IEnumerable på class Aktiviteter i stil med public class Aktiviteter : IEnumerable<Dictionary<string, Aktivitet>>.
Din løsning virker hvis jeg skal gennemløbe aktiviteter inde i klassen Aktiviteter og har direkte adgang til den private "aktiviteter". Jeg vil imidlertid have adgang til "aktiviteter" udefra. Jeg er i tvivl om public class Aktiviteter skal implementere IEnumerable (public class Aktiviteter : IEnumerable) og eventuelt hvordan den skal implementeres.
Ups, der kom vi vist nogenlunde samtidig med en løsning. Jeg havde ellers lige opdateret inden jeg skrev min kommentar. Jeg vil ikke snyde dig for point'ene, så smid lige et svar.
Udenfor klassen har jeg imidlertid stadig det problem, at jeg gerne vil kunne løbe dictionary'et igennem med en foreach (Aktivitet a in aktiviteter.AlleAktiviteter). Kan det lade sig gøre?
foreach (Aktivitet a in ditObjekt.AlleAktiviteter.Keys) { Console.WriteLine(aktiviteter[a].Navn); }
så ja.. hent normalt kan det gøres. ditObjekt er din Aktiviter klasse i det eksempel jeg kan se. men pænest er jo at lave en reference af typen Dictionary aktiviteter<string, Aktivitet> og løbe den igenne.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.