Ejemplo n.º 1
0
            public Object acceptMatch <X>(JamlParser <X> parser, Tobj obj, Match match) where X : new()
            {
                var parseMethod = parser.GetType().GetMethod("parseValue").MakeGenericMethod(value);

                Object[] param  = new Object[] { null, match.Groups["value"].Value, value };
                dynamic  result = parser.invokeMethod(parseMethod, parser, param);

                obj.GetType().GetMethod("Add").Invoke(obj, new[] { result });
                return(result);
            }
Ejemplo n.º 2
0
            public Object acceptMatch <X>(JamlParser <X> parser, Tobj obj, Match match) where X : new()
            {
                FieldInfo field = typeof(Tobj).GetField(match.Groups["key"].Value);

                if (field == null)
                {
                    throw new JamlException(match.Groups["key"].Value + parser.getLocationInfo() + "is no attribute of " + typeof(Tobj).ToString());
                }

                Object value = parser.parseValue(field.GetValue(obj), match.Groups["value"].Value, field.FieldType);

                field.SetValue(obj, value);
                return(value);
            }
Ejemplo n.º 3
0
            public Object acceptMatch <X>(JamlParser <X> parser, Tobj obj, Match match) where X : new()
            {
                var valueParseMethod = parser.GetType().GetMethod("parseValue").MakeGenericMethod(value);

                Object[] valueParam  = new Object[] { null, match.Groups["value"].Value, value };
                dynamic  parsedValue = parser.invokeMethod(valueParseMethod, parser, valueParam);

                var keyParseMethod = parser.GetType().GetMethod("parseValue").MakeGenericMethod(key);

                Object[] keyParam  = new Object[] { null, match.Groups["key"].Value, key };
                dynamic  parsedKey = parser.invokeMethod(keyParseMethod, parser, keyParam);

                obj.GetType().GetMethod("Add").Invoke(obj, new[] { parsedKey, parsedValue });
                return(parsedValue);
            }