/// <summary> /// Execute the action. /// Call the method on the specified data context with specified parameters. /// </summary> /// <param name="parametersTransform">List of transformations that will be performed onto the parameters list.</param> internal void CallAction <T>(ExtractionListEnumerator <T> callerEnumerator) { // parameters that will be passed to the extraction method. LocalVariables transformedParameters = new LocalVariables(); // transform the parameters to use with the extraction method foreach (var pair in parameters) { ExtractionObjectBase eObj; if ((eObj = pair.Value as ExtractionObjectBase) != null) { // transform the parameter by transformation method bool containsAction = (eObj.ActionsToDo != null && eObj.ActionsToDo.ContainsAction(this)); ExtractionObjectBase newValue = eObj.TransformArgument(containsAction, callerEnumerator); newValue.RemoveActionToDo(this); transformedParameters[pair.Key] = newValue; if (!containsAction)// add variable that cannot add an ActionItem within the following method call { transformedParameters.SetCannotAddActionForVariable(pair.Key); } } else { // parameter is a value, do not transform transformedParameters[pair.Key] = pair.Value; } } // call the method synchronously method(datacontext, transformedParameters); }
/// <summary> /// Construct an object with given parent object reference. /// </summary> /// <param name="parent">Parent object in object hierarchy. Used for calling next action, that may result in modifying its child objects.</param> public ExtractionObjectBase(ExtractionObjectBase parent) : this(parent, new ActionList()) { }
/// <summary> /// Initialization with initial action list. /// </summary> /// <param name="initialActions">Initial ActionList.</param> public ExtractionObjectBase(ExtractionObjectBase parent, ActionList initialActions) { this.Parent = parent; this.ActionsToDo = initialActions; // initial actions }
/// <summary> /// ctor /// </summary> /// <param name="parent"></param> public ExtractionList(ExtractionObjectBase parent) : base(parent) { }
/// <summary> /// Initialization with initial action list. /// </summary> /// <param name="initialActionList">Initial ActionList.</param> public ExtractionListBase(ExtractionObjectBase parent, ActionList initialActions) : base(parent, initialActions) { }