Пример #1
0
        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);
        }
Пример #2
0
        public EXEReferenceHandle FindReferenceHandleByName(String Name)
        {
            EXEReferenceHandle Result = FindReferencingVariableByName(Name);

            if (Result == null)
            {
                Result = FindSetReferencingVariableByName(Name);
            }
            return(Result);
        }