public static object DeserializePayloadUsingSpecificSerializer( this DescribedSerialization describedSerialization, IDeserialize deserializer, IDecompress decompressor = null, TypeMatchStrategy typeMatchStrategy = TypeMatchStrategy.NamespaceAndName, MultipleMatchStrategy multipleMatchStrategy = MultipleMatchStrategy.ThrowOnMultiple) { new { describedSerialization }.Must().NotBeNull(); new { deserializer }.Must().NotBeNull(); var localDecompressor = decompressor ?? new NullCompressor(); var targetType = describedSerialization.PayloadTypeRepresentation.ResolveFromLoadedTypes(typeMatchStrategy, multipleMatchStrategy); object ret; switch (describedSerialization.SerializationDescription.SerializationFormat) { case SerializationFormat.Binary: var rawBytes = Convert.FromBase64String(describedSerialization.SerializedPayload); var decompressedBytes = localDecompressor.DecompressBytes(rawBytes); ret = deserializer.Deserialize(decompressedBytes, targetType); break; case SerializationFormat.String: ret = deserializer.Deserialize(describedSerialization.SerializedPayload, targetType); break; default: throw new NotSupportedException(Invariant($"{nameof(SerializationFormat)} - {describedSerialization.SerializationDescription.SerializationFormat} is not supported.")); } return(ret); }
public static T DeserializePayloadUsingSpecificFactory <T>( this DescribedSerialization describedSerialization, ISerializerFactory serializerFactory, ICompressorFactory compressorFactory, TypeMatchStrategy typeMatchStrategy = TypeMatchStrategy.NamespaceAndName, MultipleMatchStrategy multipleMatchStrategy = MultipleMatchStrategy.ThrowOnMultiple, UnregisteredTypeEncounteredStrategy unregisteredTypeEncounteredStrategy = UnregisteredTypeEncounteredStrategy.Default) { return((T)DeserializePayloadUsingSpecificFactory(describedSerialization, serializerFactory, compressorFactory, typeMatchStrategy, multipleMatchStrategy, unregisteredTypeEncounteredStrategy)); }
public static DescribedSerialization ToDescribedSerialization <T>( this T objectToPackageIntoDescribedSerialization, SerializationDescription serializationDescription, TypeMatchStrategy typeMatchStrategy = TypeMatchStrategy.NamespaceAndName, MultipleMatchStrategy multipleMatchStrategy = MultipleMatchStrategy.ThrowOnMultiple, UnregisteredTypeEncounteredStrategy unregisteredTypeEncounteredStrategy = UnregisteredTypeEncounteredStrategy.Default) { return(DomainExtensions.ToDescribedSerializationUsingSpecificFactory( objectToPackageIntoDescribedSerialization, serializationDescription, SerializerFactory.Instance, CompressorFactory.Instance, typeMatchStrategy, multipleMatchStrategy, unregisteredTypeEncounteredStrategy)); }
public static object DeserializePayloadUsingSpecificFactory( this DescribedSerialization describedSerialization, ISerializerFactory serializerFactory, ICompressorFactory compressorFactory, TypeMatchStrategy typeMatchStrategy = TypeMatchStrategy.NamespaceAndName, MultipleMatchStrategy multipleMatchStrategy = MultipleMatchStrategy.ThrowOnMultiple, UnregisteredTypeEncounteredStrategy unregisteredTypeEncounteredStrategy = UnregisteredTypeEncounteredStrategy.Default) { new { describedSerialization }.Must().NotBeNull(); new { serializerFactory }.Must().NotBeNull(); new { compressorFactory }.Must().NotBeNull(); var serializer = serializerFactory.BuildSerializer(describedSerialization.SerializationDescription, typeMatchStrategy, multipleMatchStrategy, unregisteredTypeEncounteredStrategy); var compressor = compressorFactory.BuildCompressor(describedSerialization.SerializationDescription.CompressionKind); var ret = describedSerialization.DeserializePayloadUsingSpecificSerializer(serializer, compressor, typeMatchStrategy, multipleMatchStrategy); return(ret); }
public static DescribedSerialization ToDescribedSerializationUsingSpecificFactory <T>( this T objectToPackageIntoDescribedSerialization, SerializationDescription serializationDescription, ISerializerFactory serializerFactory, ICompressorFactory compressorFactory, TypeMatchStrategy typeMatchStrategy = TypeMatchStrategy.NamespaceAndName, MultipleMatchStrategy multipleMatchStrategy = MultipleMatchStrategy.ThrowOnMultiple, UnregisteredTypeEncounteredStrategy unregisteredTypeEncounteredStrategy = UnregisteredTypeEncounteredStrategy.Default) { new { serializationDescription }.Must().NotBeNull(); new { serializerFactory }.Must().NotBeNull(); new { compressorFactory }.Must().NotBeNull(); var serializer = serializerFactory.BuildSerializer(serializationDescription, typeMatchStrategy, multipleMatchStrategy, unregisteredTypeEncounteredStrategy); var compressor = compressorFactory.BuildCompressor(serializationDescription.CompressionKind); var ret = objectToPackageIntoDescribedSerialization.ToDescribedSerializationUsingSpecificSerializer( serializationDescription, serializer, compressor); return(ret); }
public static T DeserializePayload <T>(this DescribedSerialization describedSerialization, TypeMatchStrategy typeMatchStrategy = TypeMatchStrategy.NamespaceAndName, MultipleMatchStrategy multipleMatchStrategy = MultipleMatchStrategy.ThrowOnMultiple, UnregisteredTypeEncounteredStrategy unregisteredTypeEncounteredStrategy = UnregisteredTypeEncounteredStrategy.Default) { return(DomainExtensions.DeserializePayloadUsingSpecificFactory <T>( describedSerialization, SerializerFactory.Instance, CompressorFactory.Instance, typeMatchStrategy, multipleMatchStrategy, unregisteredTypeEncounteredStrategy)); }
/// <inheritdoc /> public ISerializeAndDeserialize BuildSerializer(SerializationDescription serializationDescription, TypeMatchStrategy typeMatchStrategy = TypeMatchStrategy.NamespaceAndName, MultipleMatchStrategy multipleMatchStrategy = MultipleMatchStrategy.ThrowOnMultiple, UnregisteredTypeEncounteredStrategy unregisteredTypeEncounteredStrategy = UnregisteredTypeEncounteredStrategy.Default) { new { serializationDescription }.Must().NotBeNull(); if (serializationDescription != this.supportedSerializationDescription) { throw new NotSupportedException(Invariant($"Supplied '{nameof(serializationDescription)}' ({serializationDescription}) does not match '{nameof(this.supportedSerializationDescription)}' ({this.supportedSerializationDescription}).")); } return(this.serializer); }
/// <inheritdoc /> public ISerializeAndDeserialize BuildSerializer(SerializationDescription serializationDescription, TypeMatchStrategy typeMatchStrategy = TypeMatchStrategy.NamespaceAndName, MultipleMatchStrategy multipleMatchStrategy = MultipleMatchStrategy.ThrowOnMultiple, UnregisteredTypeEncounteredStrategy unregisteredTypeEncounteredStrategy = UnregisteredTypeEncounteredStrategy.Default) { new { serializationDescription }.Must().NotBeNull(); lock (this.sync) { var configurationType = serializationDescription.ConfigurationTypeRepresentation?.ResolveFromLoadedTypes(typeMatchStrategy, multipleMatchStrategy); switch (serializationDescription.SerializationKind) { case SerializationKind.Json: return(new NaosJsonSerializer(configurationType, unregisteredTypeEncounteredStrategy)); default: throw new NotSupportedException(Invariant($"{nameof(serializationDescription)} from enumeration {nameof(SerializationKind)} of {serializationDescription.SerializationKind} is not supported.")); } } }
/// <summary> /// Initializes a new instance of the <see cref="TypeComparer"/> class. /// </summary> /// <param name="typeMatchStrategy">Strategy for use when matching the type.</param> public TypeComparer(TypeMatchStrategy typeMatchStrategy) { this.typeMatchStrategy = typeMatchStrategy; }