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