Всем привет, мне нужна помощь. Я не могу понять, как сериализовать / десериализовать, и я перепробовал много вещей, которые я видел при переполнении стека, но ничего не получалось.
Ситуация здесь, у меня есть зоопарк класс, который создает список
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Xml.Serialization;
namespace TP3
{
class Zoo
{
private List<object> zooList;
public Zoo()
{
zooList = new List<object>();
}
public void add ( object animal)
{
zooList.Add(animal);
}
public void remove(object animal)
{
zooList.Remove(animal);
}
public void clear( )
{
zooList.Clear();
}
public void move()
{
foreach(IAnimal specimen in zooList)
{
if (specimen is IMammal)
{
Console.Write("Mammal " + specimen);
specimen.move();
}
else
{
Console.Write("Reptile " + specimen );
specimen.move();
}
}
}
public void eat()
{
foreach (IAnimal specimen in zooList)
{
if (specimen is IMammal)
{
Console.Write("Mammal " + specimen);
specimen.eat();
}
else
{
Console.Write("Reptile " + specimen);
specimen.eat();
}
}
}
public void count()
{
int compteur = 0;
int countReptile= 0;
int countMammal = 0;
foreach (IAnimal specimen in zooList)
{
if (specimen is IMammal)
{
countMammal++;
}
else
{
countReptile++;
}
compteur++;
}
Console.WriteLine("Le zoo à "+ compteur + " animales");
Console.WriteLine(countMammal + " mammifères, et " + countReptile+ " Reptiles");
}
public void display ()
{
Console.WriteLine("Le zoo contient :");
Console.WriteLine("--------DEBUT-------------------");
foreach (IAnimal specimen in zooList)
{
if (specimen is IMammal)
{
Console.WriteLine("Mammal " + specimen);
}
else
{
Console.WriteLine("Reptile " + specimen);
}
}
Console.WriteLine("--------FIN-------------------");
}
}
}
А в список попадают разные объектные животные, подобные этому
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TP3
{
public class Lion : IMammal
{
private string Name;
public string _name
{
get { return Name; }
}
public Lion(string name)
{
Name = name;
}
public void move()
{
Console.WriteLine(" Superbe course du lion");
}
public void eat()
{
Console.WriteLine(" Bonne viande ");
}
public void NiceFur()
{
Console.WriteLine("Une crinière Majestueuse");
}
void IMammal.Lay()
{
}
public override string ToString()
{
return _name;
}
}
Более того, я использую основную функцию, а вот функцию сохранения и загрузки я пытаюсь достичь
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TP3
{
class Program
{
static void Main(string[] args)
{
Zoo vincennes = new Zoo();
Cow cow1 = new Cow ("cow 1");
Cow cow2 = new Cow ( "cow 2" );
// string file = @"C:\temp\zoosave.out";
string file = Environment.CurrentDirectory + "\\myText.txt" ;
vincennes.add(new Lion ("lion 1"));
vincennes.add(cow1);
vincennes.add(new Lizard ("lizard 1"));
vincennes.add(new Platypus("platypus 1"));
vincennes.add(new Snake("snake 1"));
vincennes.display();
vincennes.remove(cow1);
vincennes.remove(cow2);
vincennes.display();
vincennes.move();
vincennes.eat();
vincennes.count();
vincennes.save(file);
vincennes.clear();
vincennes.display();
vincennes.load(file);
vincennes.display();
System.Console.Read();
}
}
Извините, потому что, может быть, я многого прошу, но я просто не знаю, как это сделать.