protected IMoBiCommand AddFormulaToFormulaCacheAndSetOnStartValue <TFormula>(TBuildingBlock startValuesBuildingBlock, TStartValue startValue, IParameter referenceParameter) where TFormula : IFormula { var macroCommand = new MoBiMacroCommand { CommandType = AppConstants.Commands.AddCommand, Description = AppConstants.Commands.AddFormulaToBuildingBlock, ObjectType = _interactionTaskContext.GetTypeFor <TFormula>() }; var newFormula = _moBiFormulaTask.CreateNewFormula <TFormula>(startValue.Dimension); macroCommand.AddCommand(new AddFormulaToFormulaCacheCommand(startValuesBuildingBlock, newFormula).Run(Context)); if (!_moBiFormulaTask.EditNewFormula(newFormula, macroCommand, startValuesBuildingBlock, referenceParameter)) { return(CancelCommand(macroCommand)); } macroCommand.Add(SetFormula(startValuesBuildingBlock, startValue, newFormula)); return(macroCommand); }