예제 #1
0
 public static void SetDefaultTrackerDeep(this ITrackable trackable)
 {
     trackable.SetDefaultTracker();
     foreach (var child in trackable.GetChildTrackables())
     {
         child.Value.SetDefaultTrackerDeep();
     }
 }
예제 #2
0
 public static void RollbackDeep(this ITrackable trackable)
 {
     trackable.Rollback();
     foreach (var child in trackable.GetChildTrackables())
     {
         child.Value.RollbackDeep();
     }
 }
예제 #3
0
        public static void ClearTrackerDeep(this ITrackable trackable)
        {
            if (trackable.Tracker != null)
            {
                trackable.Tracker.Clear();
            }

            foreach (var child in trackable.GetChildTrackables())
            {
                child.Value.ClearTrackerDeep();
            }
        }
예제 #4
0
        public static IEnumerable <KeyValuePair <string, ITrackable> > GetChangedTrackablesWithPath(
            this ITrackable trackable, string parentPath = null)
        {
            if (trackable.Changed)
            {
                yield return(new KeyValuePair <string, ITrackable>(parentPath ?? "", trackable));
            }

            foreach (var child in trackable.GetChildTrackables())
            {
                var subPath = parentPath != null ? (parentPath + "/" + child.Key) : child.Key.ToString();
                foreach (var subResult in child.Value.GetChangedTrackablesWithPath(subPath))
                {
                    yield return(subResult);
                }
            }
        }