c# - PropertyChanged event no longer work after deserialization -


i using class trulyobservablecollection listed below. i'm adding event listener propertychanged event , works fine initially. serialize , deserialize collection , add event listener then, events no longer come through can seen unit test below. can explain why?

this class:

    [serializable] public class trulyobservablecollection<t> : observablecollection<t> t : inotifypropertychanged {     [field:nonserialized]     public event propertychangedeventhandler propertychanged;      public trulyobservablecollection() { init(); }      private void init()     {         collectionchanged += trulyobservablecollection_collectionchanged;     }      void trulyobservablecollection_collectionchanged(object sender, notifycollectionchangedeventargs e)     {         if (e.newitems != null)             foreach (object item in e.newitems)                 (item inotifypropertychanged).propertychanged += item_propertychanged;          if (e.olditems != null)             foreach (object item in e.olditems)                 (item inotifypropertychanged).propertychanged -= item_propertychanged;     }      void item_propertychanged(object sender, propertychangedeventargs e)     {         if (this.propertychanged != null)             propertychanged(this, new propertychangedeventargs(e.propertyname));     } } 

here unit test. sieeserializer.clone() binarize serialize , deserialize.

[testclass] public class unittest1 {     [testmethod]     public void testmethod1()     {         trulyobservablecollection<somedata> tt = new trulyobservablecollection<somedata>();         tt.add(new somedata());         tt = sieeserializer.clone(tt) trulyobservablecollection<somedata>;         tt.propertychanged += (s, e) =>         {             string ttt = ""; // never here..         };         tt[0].master = true;     } }  [serializable] public class somedata : inotifypropertychanged {     private bool master;     public bool master     {         { return master; }         set { master = value; sendpropertychanged(); }     }      [field: nonserialized]     public event propertychangedeventhandler propertychanged;     protected virtual void sendpropertychanged([callermembername]string propertyname = null)     {         if (this.propertychanged != null)             propertychanged(this, new propertychangedeventargs(propertyname));     } } 


Comments