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