public void OnMethodInvoke(MethodInterceptionArgs args) { try { PropertyChangesTracker.PushOnStack(args.Instance); args.Proceed(); } finally { PropertyChangesTracker.PopFromStack(); PropertyChangesTracker.RaisePropertyChangedIfNeeded(args.Instance); } }
public void OnFieldSet(LocationInterceptionArgs args) { if (this.fieldValueComparer.AreEqual(args.LocationFullName, args.GetCurrentValue(), args.Value)) { args.ProceedSetValue(); return; } args.ProceedSetValue(); this.childPropertyChangedProcessor.HandleFieldChange(args); PropertyChangesTracker.RaisePropertyChangedIfNeeded(args.Instance); }
/// <summary> /// Raise all events on specific object /// </summary> /// <param name="instance">object to raise events on</param> public static void RaiseEvents(object instance) { PropertyChangesTracker.RaisePropertyChangedOnlyOnSpecifiedInstance(instance); }
/// <summary> /// Raise all events on objects not in call stack /// </summary> public static void RaiseEvents() { PropertyChangesTracker.RaisePropertyChangedIncludingCurrentObject(); }