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); }
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); }
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); }