public static void SetDefaultTrackerDeep(this ITrackable trackable) { trackable.SetDefaultTracker(); foreach (var child in trackable.GetChildTrackables()) { child.Value.SetDefaultTrackerDeep(); } }
public static void RollbackDeep(this ITrackable trackable) { trackable.Rollback(); foreach (var child in trackable.GetChildTrackables()) { child.Value.RollbackDeep(); } }
public static void ClearTrackerDeep(this ITrackable trackable) { if (trackable.Tracker != null) { trackable.Tracker.Clear(); } foreach (var child in trackable.GetChildTrackables()) { child.Value.ClearTrackerDeep(); } }
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); } } }