Exemple #1
0
        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();
        }
Exemple #2
0
        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
        }