public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { if (CanVisit(typeDescriptor.Type)) return this; return null; }
/// <summary> /// Initializes a new instance of the <see cref="ObjectContext"/> struct. /// </summary> /// <param name="serializerContext">The serializer context.</param> /// <param name="instance">The instance.</param> /// <param name="descriptor">The descriptor.</param> public ObjectContext(SerializerContext serializerContext, object instance, ITypeDescriptor descriptor) : this() { SerializerContext = serializerContext; Instance = instance; Descriptor = descriptor; Properties = new PropertyContainer(); }
public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { if (CanVisit(typeDescriptor.Type)) { return(this); } return(null); }
/// <inheritdoc/> public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { if (typeDescriptor is CollectionDescriptor) { var dataStyle = typeDescriptor.Type.GetCustomAttribute<DataStyleAttribute>(); if (dataStyle == null || dataStyle.Style != DataStyle.Compact) return this; } return null; }
/// <inheritdoc/> public IYamlSerializable GetSerializer(SerializerContext context, ITypeDescriptor typeDescriptor) { if (!isSealed) throw new InvalidOperationException("A serializer factory selector must be sealed before being used."); IYamlSerializable serializer; // First try, with just a read lock serializerLock.EnterReadLock(); var found = serializers.TryGetValue(typeDescriptor.Type, out serializer); serializerLock.ExitReadLock(); if (!found) { // Not found, let's take exclusive lock and try again serializerLock.EnterWriteLock(); if (!serializers.TryGetValue(typeDescriptor.Type, out serializer)) { foreach (var factory in factories) { serializer = factory.TryCreate(context, typeDescriptor); if (serializer != null) { serializers.Add(typeDescriptor.Type, serializer); break; } } } serializerLock.ExitWriteLock(); } if (serializer == null) { throw new InvalidOperationException($"Unable to find a serializer for the type [{typeDescriptor.Type}]"); } return serializer; }
/// <inheritdoc/> public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { return CanVisit(typeDescriptor.Type) ? this : null; }
public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { var type = typeDescriptor.Type; return type == typeof(SettingsProfile) ? this : null; }
public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { var type = typeDescriptor.Type; return type == typeof(EntityComponentCollection) ? this : null; }