Cast ArrayList(object) do ArrayList(klasa)

0

Proszę o pomoc, ponieważ mam problem z wykonaniem pewnej operacji w c#.

Zapisuję Arraylist objektów klasy do pliku.

ArrayList cards = new ArrayList();
Ccard death = new Ccard(0,"Death",10,1);
cards.Add(death);

BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, cards);
fs.Close();
 

Potem odczytuję listę z pliku. Do tej pory wszystko działa.

ArrayList readcards2 = (ArrayList)bf.Deserialize(rs); 

Kiedy próbuję odczytać któreś z pól obiektu klasy dostaję komunikat:

Cannot implicitly convert type 'object' to 'ConsoleApplication2.Ccard'. An explicit conversion exists (are you missing a cast?)

Nie wiem w jaki sposób mogę z powrotem przekonwertować "object" do klasy "Ccard". Bardzo proszę o pomoc.

5

Generalnie sprawa jest prosta:

var card = (Ccard) readcards2[0];

Jest tak dlatego, że przedpotopowy typ ArrayList przechowuje elementy jako object i trzeba rzutować. Powinieneś używać bardziej nowoczesnych narzędzi jak List<T> na przykład

0

W takim razie spróbuję użyć innej kolekcji. Dziękuję za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1