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
Post a Comment