public List <long> Evaluate(CDRelationshipPool RelationshipSpace, EXEScope Scope) { List <long> Result = null; EXEReferenceHandle StartVariable = Scope.FindReferenceHandleByName(this.StartingVariable); if (StartVariable != null && this.RelationshipSpecification.Any()) { List <long> CurrentIds = StartVariable.GetReferencedIds(); if (CurrentIds == null) { return(null); } String CurrentClass = StartVariable.ClassName; foreach (EXERelationshipLink RelationshipLink in this.RelationshipSpecification) { if (CurrentIds == null || !CurrentIds.Any()) { break; } CurrentIds = RelationshipLink.RetrieveIds(CurrentIds, CurrentClass, RelationshipSpace); CurrentClass = RelationshipLink.ClassName; } Result = CurrentIds; } return(Result); }
public EXEReferenceHandle FindReferenceHandleByName(String Name) { EXEReferenceHandle Result = FindReferencingVariableByName(Name); if (Result == null) { Result = FindSetReferencingVariableByName(Name); } return(Result); }