示例#1
0
        public void FromStream(DataReader reader, StateDictionary state, Utils.Logger logger)
        {
            _reader = reader;
            _state  = state;
            _logger = logger;

            if (_state.ContainsKey("parent"))
            {
                _parent = _state["parent"];
            }

            FromStream();
        }
示例#2
0
        static object GetValue(object target, string name, bool caseSensitive)
        {
            Type baseType;

            if (target is Type)
            {
                baseType = (Type)target;
            }
            else
            {
                baseType = target.GetType();
            }

            PropertyInfo prop = baseType.GetProperty(name, GetFlags(caseSensitive));

            if (prop == null)
            {
                FieldInfo field = baseType.GetField(name, GetFlags(caseSensitive));
                if (field == null)
                {
                    // If a parser type then see if we can pull the value from its state dictionary
                    BaseParser targetParser = target as BaseParser;
                    if (targetParser != null)
                    {
                        StateDictionary dict = targetParser.GetState();
                        if (dict.ContainsKey(name))
                        {
                            return(dict[name]);
                        }
                    }

                    throw new ArgumentException(String.Format(Properties.Resources.ExpressionResolver_CannotFindProperty, name));
                }

                return(field.GetValue(target));
            }
            else
            {
                return(prop.GetValue(target, null));
            }
        }