public void TestSubscribePropChangedTyped()
        {
            // TODO: AAA
            mod1 = new AllPropsRegisteredModel(PropBagTypeSafetyMode.AllPropsMustBeRegistered,
                                               _amHelpers.StoreAccessCreator, _amHelpers.PropFactory_V1);

            mod1.SubscribeToPropChanged <int>(DoWhenPropIntChangesTyped, "PropInt");

            mod1.PropInt = 0;
            mod1.PropInt = 1;

            Assert.That(typedOldVal, Is.EqualTo(0), "The old value should have been 0.");
            Assert.That(typedNewVal, Is.EqualTo(1), "The new value should have been 1.");

            mod1.UnSubscribeToPropChanged <int>(DoWhenPropIntChangesTyped, "PropInt");
            mod1.PropInt = 2;

            Assert.That(typedOldVal, Is.EqualTo(0), "The old value should have been 0. The action did not get unsubscribed.");
            Assert.That(typedNewVal, Is.EqualTo(1), "The new value should have been 1.");
        }
        public void TestSubscribePropChangedGen()
        {
            // TODO: AAA
            mod1 = new AllPropsRegisteredModel(PropBagTypeSafetyMode.AllPropsMustBeRegistered,
                                               _amHelpers.StoreAccessCreator, _amHelpers.PropFactory_V1);

            mod1.SubscribeToPropChanged(eventHandler: DoWhenPropIntChangesGen, propertyName: "PropInt", propertyType: typeof(int));

            mod1.PropInt = 0;
            mod1.PropInt = 1;

            Assert.That(genObjOldVal, Is.EqualTo(0), "The old value should have been 0.");
            Assert.That(genObjNewVal, Is.EqualTo(1), "The new value should have been 1.");

            mod1.UnSubscribeToPropChanged(eventHandler: DoWhenPropIntChangesGen, propertyName: "PropInt", propertyType: typeof(int));
            mod1.PropInt = 2;

            Assert.That(genObjOldVal, Is.EqualTo(0), "The old value should have been 0. The action did not get unsubcribed.");
            Assert.That(genObjNewVal, Is.EqualTo(1), "The new value should have been 1.");
        }
        public void TestPropertyChangedObject()
        {
            // TODO: AAA
            mod1 = new AllPropsRegisteredModel(PropBagTypeSafetyMode.AllPropsMustBeRegistered,
                                               _amHelpers.StoreAccessCreator, _amHelpers.PropFactory_V1);

            //Action<object, EventArgs> objHandler = this.TestHandler;

            //WeakReference Target = new WeakReference(objHandler.Target);

            //MethodInfo mi = objHandler.Method;

            ////Delegate ttt = mi.CreateDelegate();

            //Type dType = objHandler.Method.GetDelegateType();

            //var temp3 = Delegate.CreateDelegate(dType, null, objHandler.Method);

            //var temp4 = Convert.ChangeType(temp3, dType);

            ////Main();


            //Action<TestAllPropsRegistered, object, EventArgs> xx = (Action<TestAllPropsRegistered, object, EventArgs>)Delegate.CreateDelegate(typeof(Action<TestAllPropsRegistered, object, EventArgs>), null, mi);

            ////PCObjEventHandler temp = (PCObjEventHandler) Delegate.CreateDelegate(typeof(PCObjEventHandler), null, sKey.ObjHandler.Method);
            ////ObjHandler = temp;

            ////PCObjectEventAction temp2 = (PCObjectEventAction) Delegate.CreateDelegate(typeof(PCObjectEventAction), null, sKey.ObjHandler.Method);
            ////ObjHandlerProxy = temp4;

            //string methodName = objHandler.Method.Name;

            mod1.SubscribeToPropChanged(Mod1_PropertyChangedWithObjectVals, "PropInt");

            mod1.PropInt = 0;
            mod1.PropInt = 1;

            Assert.That(genObjOldVal, Is.EqualTo(0), "The old value should have been 0.");
            Assert.That(genObjNewVal, Is.EqualTo(1), "The old value should have been 1.");
        }