Example #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 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 TagNodeTypeResolver(tagMappings));
            TypeResolvers.Add(new TypeNameInTagNodeTypeResolver());
            TypeResolvers.Add(new DefaultContainersNodeTypeResolver());

            valueDeserializer =
                new AliasValueDeserializer(
                    new NodeValueDeserializer(
                        NodeDeserializers,
                        TypeResolvers
                        )
                    );
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="options">Options that control how the serialization is to be performed.</param>
        /// <param name="namingConvention">Naming strategy to use for serialized property names</param>
        /// <param name="overrides">Yaml attribute overrides</param>
        public Serializer(SerializationOptions options = SerializationOptions.None, INamingConvention namingConvention = null, YamlAttributeOverrides overrides = null)
        {
            this.options          = options;
            this.namingConvention = namingConvention ?? new NullNamingConvention();
            this.overrides        = overrides;

            Converters = new List <IYamlTypeConverter>();
            foreach (IYamlTypeConverter yamlTypeConverter in Utilities.YamlTypeConverters.GetBuiltInConverters(IsOptionSet(SerializationOptions.JsonCompatible)))
            {
                Converters.Add(yamlTypeConverter);
            }

            typeResolver = IsOptionSet(SerializationOptions.DefaultToStaticType)
                ? (ITypeResolver) new StaticTypeResolver()
                : (ITypeResolver) new DynamicTypeResolver();
        }
 public OverridePropertyDescriptor(IPropertyDescriptor baseDescriptor, YamlAttributeOverrides overrides, Type classType)
 {
     this.baseDescriptor = baseDescriptor;
     this.overrides      = overrides;
     this.classType      = classType;
 }
 public YamlAttributeOverridesInspector(ITypeInspector innerTypeDescriptor, YamlAttributeOverrides overrides)
 {
     this.innerTypeDescriptor = innerTypeDescriptor;
     this.overrides           = overrides;
 }