private void RecomputeDerivedValue()
        {
            var runningDerivation           = new RunningDerivation(_dependencies);
            RunningDerivation oldTopOfStack = RunningDerivationsStack.Top;

            RunningDerivationsStack.Top = runningDerivation;

            _value = _expressionFunction.Invoke();

            if (runningDerivation.DependenciesChanged)
            {
                _dependencies = runningDerivation.UpdateExpressionDependencies(_dependencies, this);
            }

            RunningDerivationsStack.Top = oldTopOfStack;
        }
Пример #2
0
        private void Run()
        {
            var runningDerivation           = new RunningDerivation(_dependencies);
            RunningDerivation oldTopOfStack = RunningDerivationsStack.Top;

            RunningDerivationsStack.Top = runningDerivation;

            _action.Invoke();

            if (runningDerivation.DependenciesChanged)
            {
                _dependencies = runningDerivation.UpdateReactionDependencies(_dependencies, Run);
            }

            RunningDerivationsStack.Top = oldTopOfStack;
        }