Ejemplo n.º 1
0
        private static ProtoProp LexProp(string name, IEnumerator <Token> enu, ref string source)
        {
            if (!enu.MoveNext())
            {
                throw new Exception("Expected a token");
            }

            var token = enu.Current;

            if (token.TokenType == typeof(Colon))
            {
                return(new ProtoProp {
                    Name = name, Value = GetValue(enu, ref source)
                });
            }

            if (token.TokenType == typeof(Obr))
            {
                var ret = new ProtoProp {
                    Name = name, Value = LexObject(enu, true, ref source)
                };
                return(ret);
            }

            throw UnexpectedTokenType(token, ref source);
        }
Ejemplo n.º 2
0
        private static ProtoProp LexProp(string name, IEnumerator<Token> enu, ref string source)
        {
            if (!enu.MoveNext())
                throw new Exception("Expected a token");

            var token = enu.Current;
            if (token.TokenType == typeof (Colon))
            {
                return new ProtoProp {Name = name, Value = GetValue(enu, ref source)};
            }
            
            if (token.TokenType == typeof (Obr))
            {
                var ret = new ProtoProp {Name = name, Value = LexObject(enu, true, ref source)};
                return ret;
            }

            throw UnexpectedTokenType(token, ref source);
        }
Ejemplo n.º 3
0
        private static object DeserializeProperty(ProtoProp pprop, PropertyInfo oprop)
        {
            if (!(pprop.Value is ProtoObject))
            {
                return(pprop.Value);
            }

            var ptype = oprop.PropertyType;

            if (ptype.IsGenericType)
            {
                ptype = ptype.GetGenericArguments()[0];
            }

            var pobj = pprop.Value as ProtoObject;
            var obj  = Activator.CreateInstance(ptype);

            DeserializeObject(obj, pobj);

            return(obj);
        }