//public AStep() public IAttributeModel ProcessElement(IObjectInstance objectInstance) { if (objectInstance == null) { objectInstance = this.OwnerInstance; } return(objectInstance.GetAttribute(this.Name)); }
private static IAttributeModel ProcessPath(List <IAttributeStep> steps, IObjectInstance ownerInstance) { foreach (IAttributeStep step in steps) { step.Attribute = ownerInstance.GetAttribute(step.Name); IAttributeModel attribute = step.Attribute; if (steps.Count > 1 && attribute is IReferenceAttribute) { //TODO: rewrite this List <IAttributeStep> tempSteps = new List <IAttributeStep>(); for (int i = steps.IndexOf(step) + 1; i < steps.Count; i++) { tempSteps.Add(steps[i]); } return(PathProcessor.ProcessPath(tempSteps, ((IReferenceAttribute)attribute).Field.Reference)); } else { return(attribute); } } return(null); }