Hej. Min gissning är att du måste overrida indexeraren på något vis. Någoting i stil med nedanstående kod : Vad får du för felmeddelande? om det är en dictionary du använder så SKA det vara en DictionaryEntry du får om du gör en foreach.. Tack för svaren.DictionaryBase
Är det någon av er som skrivit en "custom dictionary" som ärver från DictionaryBase.
Det jag försöker att åstadkomma är att skapa en typad dictionary och sen kunna loopa denna med foreach.
Har lyckats med det mesta jag vill men kan inte loopa som nedan.
Är i nuläget tvungen att jobba med ett DictionaryEntry object.
Såhär skulle jag vilja ha det:
<code>
foreach (Car c in myCars) //myCars är den dictionary jag försöker göra
{
//Här vill jag ha dikerkåtkomst till objektet c
//Vill inte casta DictionaryEntry till Car
MessageBox.Show(c.ToString());
}
</code>
Nån av er som vet hur man gör och kan skriva ett litet exempel?
EDIT:
Antagligen skall man skapa en egen Enumerator men jag får inte till det. :-/
//freddaSv: DictionaryBase
<code>
public Car this[object key]
{
get { return (Car)base.InnerHashtable[key]; }
set { base.InnerHashtable[key]=value; }
}
</code>
Om detta inte hjälper dig framåt...Sv: DictionaryBase
Går det att få se mer av koden, hur du deklarerat "myCars" tex?Sv: DictionaryBase
ska du hämta dina värden så är det MinLista.Values du ska använda
typ:
foreach (car c in MinLista.Values){
}
sedan om detta blir implementerat automagiskt av dictionary base vet jag inte för jag har inte kolla på den... men alla andra färdiga listor som är "dictionarys" fungerar på det sättet...
ska din lista inte fungera så så ska du nog inte använda dictionary base...
det du kan göra för att fixa enumeratorn på lättaste sättet är att overrida "GetEnumerator" typ:
public override iEnumerator GetEnumerator(){
return MinInternaLista.values.GetEnumerator();
}
//RogerSv: DictionaryBase
Roggan:
>>om det är en dictionary du använder så SKA det vara en DictionaryEntry du får om du gör en foreach..
Hmm. Det förklarar ganska mycket :-)
Tar dig på ditt ord och släpper denna fråga för nu.
Tack
//fredda