c# - Serialization of objects and Reference Equality -


does .net runtime maintain object references when serializing sql session state/inproc session state; during serialization/deserialization? in following example, i'd expect references point same object. can explain why isn't case.

e.g.:

var list = new list<foo> { new foo { name = "foo" }, new foo { name = "bar" } };  var bar = list.single(x => x.name == "bar" );  session["list"] = list; session["bar"] = bar;  var listdeserialized = (list<foo>)session["list"]; var bardeserialized = (foo)session["bar"];  assert.istrue(object.referenceequals(listdeserialized[1], bar)); // false  /* class definition */ [serializable] public class foo {     public string name { get; set; } } 

note: assume list , bar objects have been serialized/persisted sql.

yes because uses binaryformatter serialization preserves object tree was. see details here: http://msdn.microsoft.com/en-us/library/aa479041.aspx#aspnetsessionstate_topic5

some methods on serialization, xml , soap, create 2 different objects after de-serializing; binary serialization, 1 used preserve asp.net session state in sql, preserve object tree , make both references in example point same physical object in memory.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -