internal ClassInfo GetAndAddClassInfo(IFieldContainer rootClass, List <IFieldContainer> result) { IFieldContainer leftClass; if (Left == null) { leftClass = rootClass; if (!result.Contains(rootClass)) { result.Add(rootClass); } } else { leftClass = Left.GetAndAddClassInfo(rootClass, result); } FieldInfo field = leftClass.FindFieldByName(PropertyName); if (field == null) { throw new Exception("Field " + PropertyName + " not found in " + leftClass.Name); } if (field.ReferencedClass != null) { if (!result.Contains(field.ReferencedClass)) { result.Add(field.ReferencedClass); } } return(field.ReferencedClass); }
void Sooda.QL.ISoqlVisitor.Visit(SoqlPathExpression v) { v.GetAndAddClassInfo(_rootClass, _result); }