public object ReadYaml(IParser parser, Type type) { VariationGeneratorParamsBase result; parser.Accept <MappingStart>(); var deserializer = new DeserializerBuilder() .WithNamingConvention(new CamelCaseNamingConvention()) .IgnoreUnmatchedProperties() .Build(); do { parser.MoveNext(); var generatorName = YamlParamLoader.GetScalarValue(parser); switch (generatorName.ToUpper()) { case "FIXED": result = deserializer.Deserialize <FixedVariationGeneratorParams>(parser); break; case "STRINGLIST": var stringList = deserializer.Deserialize <string[]>(parser); result = new StringListVariationGeneratorParams { StringList = stringList }; break; case "NUMBERRANGE": result = deserializer.Deserialize <NumberRangeVariationGeneratorParams>(parser); break; case "COMPOUND": result = deserializer.Deserialize <CompoundVariationGeneratorParams>(parser); break; case "ARBITRARY": result = deserializer.Deserialize <ArbitraryVariationGeneratorParams>(parser); break; default: throw new YamlException($"Unknown generator: {generatorName}."); } } while (parser.Current.GetType() != EndType); parser.MoveNext(); return(result); }
public object ReadYaml(IParser parser, Type type) { parser.Accept <MappingStart>(); SuppressorParams result; var deserializer = new DeserializerBuilder() .WithNamingConvention(new CamelCaseNamingConvention()) .IgnoreUnmatchedProperties() .Build(); do { parser.MoveNext(); var suppressorName = YamlParamLoader.GetScalarValue(parser); result = deserializer.Deserialize <SuppressorParams>(parser); result.Type = Enum.Parse <SuppressorType>(suppressorName, true); } while (parser.Current.GetType() != EndType); parser.MoveNext(); return(result); }