Exemple #1
0
        public Deserializer(
            IObjectFactory objectFactory       = null,
            INamingConvention namingConvention = null,
            bool ignoreUnmatched             = false,
            YamlAttributeOverrides overrides = null)
        {
            objectFactory    = objectFactory ?? new DefaultObjectFactory();
            namingConvention = namingConvention ?? new NullNamingConvention();

            typeDescriptor.TypeDescriptor =
                new CachedTypeInspector(
                    new YamlAttributesTypeInspector(
                        new YamlAttributeOverridesInspector(
                            new NamingConventionTypeInspector(
                                new ReadableAndWritablePropertiesTypeInspector(
                                    new ReadablePropertiesTypeInspector(
                                        new StaticTypeResolver()
                                        )
                                    ),
                                namingConvention
                                ),
                            overrides
                            )
                        )
                    );

            converters = new List <IYamlTypeConverter>();
            foreach (IYamlTypeConverter yamlTypeConverter in YamlTypeConverters.GetBuiltInConverters(false))
            {
                converters.Add(yamlTypeConverter);
            }

            NodeDeserializers = new List <INodeDeserializer>();
            NodeDeserializers.Add(new YamlConvertibleNodeDeserializer(objectFactory));
            NodeDeserializers.Add(new YamlSerializableNodeDeserializer(objectFactory));
            NodeDeserializers.Add(new TypeConverterNodeDeserializer(converters));
            NodeDeserializers.Add(new NullNodeDeserializer());
            NodeDeserializers.Add(new ScalarNodeDeserializer());
            NodeDeserializers.Add(new ArrayNodeDeserializer());
            NodeDeserializers.Add(new DictionaryNodeDeserializer(objectFactory));
            NodeDeserializers.Add(new CollectionNodeDeserializer(objectFactory));
            NodeDeserializers.Add(new EnumerableNodeDeserializer());
            NodeDeserializers.Add(new ObjectNodeDeserializer(objectFactory, typeDescriptor, ignoreUnmatched));

            tagMappings   = new Dictionary <string, Type>(predefinedTagMappings);
            TypeResolvers = new List <INodeTypeResolver>();
            TypeResolvers.Add(new YamlConvertibleTypeResolver());
            TypeResolvers.Add(new YamlSerializableTypeResolver());
            TypeResolvers.Add(new TagNodeTypeResolver(tagMappings));
            TypeResolvers.Add(new TypeNameInTagNodeTypeResolver());
            TypeResolvers.Add(new DefaultContainersNodeTypeResolver());

            valueDeserializer =
                new AliasValueDeserializer(
                    new NodeValueDeserializer(
                        NodeDeserializers,
                        TypeResolvers
                        )
                    );
        }
Exemple #2
0
        public void AllBuiltInConvertersAreRegistered()
        {
            var interfaceType  = typeof(IYamlTypeConverter);
            var converterTypes = interfaceType.Assembly
                                 .GetTypes()
                                 .Where(t => !t.IsInterface && interfaceType.IsAssignableFrom(t));

            var unregisteredTypes = converterTypes
                                    .Where(t => !YamlTypeConverters.GetBuiltInConverters(false).Any(c => c.GetType() == t))
                                    .ToArray();

            Assert.Equal(new Type[0], unregisteredTypes);
        }
Exemple #3
0
        public Serializer(SerializationOptions options = 0, INamingConvention namingConvention = null, YamlAttributeOverrides overrides = null)
        {
            this.options = options;
            INamingConvention convention1 = namingConvention;

            if (namingConvention == null)
            {
                INamingConvention local1 = namingConvention;
                convention1 = new NullNamingConvention();
            }
            this.namingConvention = convention1;
            this.overrides        = overrides;
            this.Converters       = new List <IYamlTypeConverter>();
            foreach (IYamlTypeConverter converter in YamlTypeConverters.GetBuiltInConverters(this.IsOptionSet(SerializationOptions.JsonCompatible)))
            {
                this.Converters.Add(converter);
            }
            this.typeResolver = !this.IsOptionSet(SerializationOptions.DefaultToStaticType) ? ((ITypeResolver) new DynamicTypeResolver()) : ((ITypeResolver) new StaticTypeResolver());
        }