Example #1
0
        public virtual T_Type RenderView(StringBuilder builder, List <string> call_stack, StringBuilder paras, AssignOperatorInfo?op, StringBuilder opValue,
                                         PostfixPartType?postfixPartType, StringBuilder func_paras, StringBuilder index_para)
        {
            //if(call_stack == null)

            var member                  = call_stack[0];
            AssignOperatorInfo?op2      = null;
            StringBuilder      opValue2 = null;

            if (call_stack.Count == 1)
            {
                op2      = op;
                opValue2 = opValue;
            }

            T_Type nextType = null;

            if (!this.IsInstance)
            {
                foreach (var f in this.Static_Fields)
                {
                    if (f.Name == member)
                    {
                        this.RenderView(builder, f, op2, opValue2);
                        nextType = f.Type;
                        break;
                    }
                }
                if (nextType == null)
                {
                    foreach (var m in this.Static_Methods)
                    {
                        if (m.Name == member)
                        {
                            this.RenderView(builder, m, paras);
                            nextType = m.Type;
                            break;
                        }
                    }
                }
            }
            else
            {
                foreach (var f in this.Fields)
                {
                    if (f.Name == member)
                    {
                        this.RenderView(builder, f, op2, opValue2);
                        nextType = f.Type;
                        break;
                    }
                }
                if (nextType == null)
                {
                    foreach (var m in this.Methods)
                    {
                        if (m.Name == member)
                        {
                            this.RenderView(builder, m, paras);
                            nextType = m.Type;
                            break;
                        }
                    }
                }
            }
            if (call_stack.Count > 1)
            {
                //var call_stack2 = new List<string>();
                //call_stack2.AddRange(call_stack);
                //call_stack2.RemoveAt(0);
                return(nextType.RenderView(builder, call_stack.SubList(1), paras, op, opValue, postfixPartType, func_paras, index_para));
            }

            return(nextType);
        }