public void DisposeTest() { string actualValue = null; TestObject obj = new TestObject { SValue = "Test String", IValue = 10 }; WeakReference wr = new WeakReference(obj); PropertyObserver <TestObject> po = new PropertyObserver <TestObject>(obj); po.RegisterHandler(o => o.SValue, (oo) => actualValue = oo.SValue); obj.SValue = "1"; Assert.AreEqual("1", actualValue); po.Dispose(); obj.SValue = "2"; Assert.AreEqual("1", actualValue); #if !DEBUG obj = null; GC.Collect(2, GCCollectionMode.Forced); Assert.IsFalse(wr.IsAlive); #endif }
public void DisposeWithGlobalHandler() { bool gotPropChange = false; TestObject obj = new TestObject { SValue = "Test String", IValue = 10 }; PropertyObserver <TestObject> po = new PropertyObserver <TestObject>(obj); po.PropertyChanged += (s, e) => { gotPropChange = true; }; po.Dispose(); obj.IValue = 5; Assert.IsFalse(gotPropChange); }