示例#1
0
 private void zToXmlRecursive(IStateVariable stateVariable, XmlWriter xWriter, bool isList)
 {
     if (stateVariable.XMLFieldOutputMode != XMLFieldOutputMode.None)
     {
         string nodeName = isList && stateVariable is ObjectStateVariable
             ? ((ObjectStateVariable)stateVariable).ObjectClassName
             : stateVariable.Name;
         if (stateVariable.XMLFieldOutputMode == XMLFieldOutputMode.Element)
         {
             xWriter.WriteStartElement(nodeName);
         }
         else
         {
             xWriter.WriteStartAttribute(nodeName);
         }
         if (stateVariable is ListStateVariable)
         {
             foreach (IStateVariable childVariable in ((ListStateVariable)stateVariable).Value)
             {
                 zToXmlRecursive(childVariable, xWriter, true);
             }
         }
         else if (stateVariable is ObjectStateVariable)
         {
             foreach (IStateVariable memberVariable in ((ObjectStateVariable)stateVariable).Value.Values)
             {
                 zToXmlRecursive(memberVariable, xWriter, false);
             }
         }
         else
         {
             xWriter.WriteString(stateVariable.ValueAsString());
         }
         if (stateVariable.XMLFieldOutputMode == XMLFieldOutputMode.Element)
         {
             xWriter.WriteEndElement();
         }
         else
         {
             xWriter.WriteEndAttribute();
         }
     }
 }
        public bool EvaulateExpression(ExpressionNode expression, DataScope dataScope)
        {
            IStateVariable variable1 = dataScope.GetStateVariable(expression.StateVariable);

            if (variable1 == null)
            {
                throw zGetMissingVariableException(expression, false);
            }
            string strValue1 = variable1.ValueAsString();
            T      value1;

            if (!zGetTypeData(strValue1, out value1))
            {
                throw zGetFormatException(strValue1);
            }

            string strValue2;

            if (expression.VariableAsValue)
            {
                IStateVariable variable2 = dataScope.GetStateVariable(expression.Value);
                if (variable2 == null)
                {
                    throw zGetMissingVariableException(expression, true);
                }
                strValue2 = variable2.ValueAsString();
            }
            else
            {
                strValue2 = expression.Value;
            }
            T value2;

            if (!zGetTypeData(strValue2, out value2))
            {
                throw zGetFormatException(strValue2);
            }

            bool result = zEvaluateExpression(expression, value1, value2);

            return(expression.Negated ? !result : result);
        }