Example #1
0
        public ObservableValue(TIn value, string name = null, IManipulator manipulator = null, object meta = null) : base(name ?? $"ObservableValue@{States.NextId}")
        {
            Meta = meta;

            Manipulator = manipulator ?? Manipulator <TIn, TOut> .For();

            _Value = Manipulator.Enhance(value, default(TIn), Name);
        }
Example #2
0
        public bool PrepareNewValue(TIn oldValue, TIn changeValue, out TIn newValue)
        {
            this.CheckIfStateModificationsAreAllowed();

            newValue = changeValue;

            if (this.HasInterceptors <IValueWillChange <TIn> >())
            {
                var change = this.NotifyInterceptors(new ValueWillChange <TIn>(newValue, this));
                if (change == null)
                {
                    return(false);
                }
                newValue = change.NewValue;
            }

            newValue = (TIn)Manipulator.Enhance(newValue, oldValue, Name);

            return(!EqualityComparer <TIn> .Default.Equals(newValue, oldValue));
        }