internal ListValuedPropertyChangedRecord(ViewModel.ViewModelController controller, TrackableObject trackableObject, string propertyName, IEnumerable <string> targetList) : base(ActionTypes.ChangePropertyList, controller, trackableObject)
        {
            ObjectType   = trackableObject.GetType().ToString();
            PropertyName = propertyName;
            Value        = targetList.ToArray <string>();
#if DEBUGUNDOREDO
            Debug.WriteLine($@">>> ListValuedPropertyChangedRecord.ListValuedPropertyChangedRecord: Created {UnitDescription} record, Id: {Id}, PropertyName: {PropertyName}, Value: {ArrayToString(Value)}");
#endif
        }
        internal PropertyChangedRecord(ViewModel.ViewModelController controller, TrackableObject trackableObject, string propertyName, string v) : base(ActionTypes.ChangeProperty, controller, trackableObject)
        {
            ObjectType   = trackableObject.GetType().ToString();
            PropertyName = propertyName;
            Value        = v;
#if DEBUGUNDOREDO
            Debug.WriteLine($@">>> PropertyChangedRecord.PropertyChangedRecord: Created {UnitDescription} record, Id: {Id}, PropertyName: {PropertyName}, Value: {v}");
#endif
        }