コード例 #1
0
        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);
        }
コード例 #2
0
 void Sooda.QL.ISoqlVisitor.Visit(SoqlPathExpression v)
 {
     v.GetAndAddClassInfo(_rootClass, _result);
 }
コード例 #3
0
 void Sooda.QL.ISoqlVisitor.Visit(SoqlPathExpression v)
 {
     v.GetAndAddClassInfo(_rootClass, _result);
 }