Возможно, ли сохранить ссылки объектов друг на друга после сериализации и следующей десериализации объектов в разные файлы. Вот пример, код написан только для теста. Тут ничего не получается, но может есть варианты?
| Код | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.IO;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Save(); Load(); }
public static void Save() { SomeClass sc = new SomeClass();
ClassB cb = null;
cb = new ClassB(); cb.sss = "ss1"; sc.list.Add(cb);
cb = new ClassB(); cb.sss = "ss2"; sc.list.Add(cb);
cb = new ClassB(); cb.sss = "ss3"; sc.list.Add(cb);
sc.a.b = sc.list;
Stream s = new FileStream("SomeClass.dat", FileMode.Create, FileAccess.Write, FileShare.None); BinaryFormatter binFormat = new BinaryFormatter(); binFormat.Serialize(s, sc); s.Close();
s = new FileStream("ClassA.dat", FileMode.Create, FileAccess.Write, FileShare.None); binFormat = new BinaryFormatter(); binFormat.Serialize(s, sc.a); s.Close(); }
public static void Load() { Stream fStream = File.OpenRead("SomeClass.dat"); BinaryFormatter binFormat = new BinaryFormatter(); SomeClass sc = (SomeClass)binFormat.Deserialize(fStream); fStream.Close();
fStream = File.OpenRead("ClassA.dat"); binFormat = new BinaryFormatter(); ClassA ca = (ClassA)binFormat.Deserialize(fStream); fStream.Close();
sc.a = ca;
if (sc.a.b.Equals(sc.list)) { Console.WriteLine("true"); }
Console.ReadLine(); } }
[Serializable] public class SomeClass { public List<ClassB> list = null;
[NonSerialized] public ClassA a = null;
public SomeClass() { list = new List<ClassB>(); a = new ClassA(); } }
[Serializable] public class ClassA { public List<ClassB> b = null; }
[Serializable] public class ClassB { public string sss; }
}
|
|