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);
        }
Exemplo n.º 2
0
        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);
        }