private static object ParsePrimitive(JsonTokens tokens, Type klass) { string word = tokens.popWordPrimitive(); if (!klass.IsPrimitive || typeof(string).IsAssignableFrom(klass)) { if (word.ToLower().Equals("null")) { return(null); } else { throw new InvalidOperationException("Looking for a primitive but requires instance of " + klass); } } /*********** TODO *************/ // Invoke the corresponding Parse method of klass if (klass.Name.Equals("Int32")) { return(Int32.Parse(word)); } throw new NotImplementedException(); }
private static object ParsePrimitive(JsonTokens tokens, Type klass) { string word = tokens.popWordPrimitive(); if (!klass.IsPrimitive || typeof(string).IsAssignableFrom(klass)) { if (word.ToLower().Equals("null")) { return(null); } else { throw new InvalidOperationException("Looking for a primitive but requires instance of " + klass); } } _cache.CheckAndAddType(klass, klass.GetMethod("Parse", new Type[] { typeof(string) })); //mete em cache o método Parse do tipo primitivo do argumento klass return(_cache.GetValueFromMethod(klass, "Parse", word)); //pede para receber um valor do método Parse }