Пример #1
0
        protected override void ResolveInternal()
        {
            // Try to bind to a field or property
            if (this.ResolveFieldProperty(MyPrevious) == true)
            {
                this.AddReferencedVariable(MyPrevious);
                return;
            }

            // Try to find a variable with our name
            _myVariableType = MyContext.Variables.GetVariableTypeInternal(MyName);

            // Variables are only usable as the first element
            if (MyPrevious == null && (_myVariableType != null))
            {
                this.AddReferencedVariable(MyPrevious);
                return;
            }

            CalculationEngine ce = MyContext.CalculationEngine;

            if ((ce != null))
            {
                ce.AddDependency(MyName, MyContext);
                _myCalcEngineReferenceType = ce.ResolveTailType(MyName);
                return;
            }

            if (MyPrevious == null)
            {
                base.ThrowCompileException(CompileErrorResourceKeys.NoIdentifierWithName, CompileExceptionReason.UndefinedName, MyName);
            }
            else
            {
                base.ThrowCompileException(CompileErrorResourceKeys.NoIdentifierWithNameOnType, CompileExceptionReason.UndefinedName, MyName, MyPrevious.TargetType.Name);
            }
        }