Ich habe ein statisches generisches Wörterbuch in einer Klasse. Da das statische Member nicht serialisiert werden kann, habe ich die ISerializable-Schnittstelle und die Methode GetObjectData zur Serialisierung implementiert. Ich habe einen Konstruktor, der auch SerializationInfo und StreamingContext akzeptiert, um den Dictionay zu desertieren. Jetzt, wenn ich serialisieren und deserialisieren will, gibt es immer 1 zurück (ich habe 2 Einträge hinzugefügt). bitte finden Sie die pseduo code-DeSerialization funktioniert nicht, obwohl ich GetObjectData Methode und Konstruktor implementieren
[Serializable]
public class MyClass : ISerializable
{
internal static Dictionary<long, string> dict = new Dictionary<long,string>();
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("static.dic", MyClass1.dict, typeof(Dictionary<long, string>));
}
public MyClass(SerializationInfo info, StreamingContext context)
{
MyClass.dict= (Dictionary<long, string>)info.GetValue("static.dic",
typeof(Dictionary<long, string>));
}
public void Add()
{
dict.Add(21, "11");
}
public MyClass()
{
dict.Add(21, "11");
}
}
public class MyClass
{
MyClass myClass = new MyClass();
public static void Main()
{
myClass.Add();
FileStream fileStream = new FileStream("test.binary", FileMode.Create);
IFormatter bf = new BinaryFormatter();
bf.Serialize(fileStream, myClass);
fileStream.Dispose();
fileStream.Close();
fileStream = new FileStream("test.binary", FileMode.Open);
bf = new BinaryFormatter();
myClass = (MyClass1)bf.Deserialize(fileStream);
}
}
Ihr Code sieht fast vollständig aus, wird aber nicht kompiliert.Machen Sie jedem einen Gefallen und verwandeln Sie es zunächst in ein (kurzes) Arbeitsprogramm und posten Sie es dann. –