Fix Type serialization for MongoDB provider
This commit is contained in:
parent
cbfb21c4c9
commit
abc4e5389c
|
|
@ -0,0 +1,28 @@
|
|||
using System;
|
||||
using Elsa.Models;
|
||||
using MongoDB.Bson.Serialization;
|
||||
using Rebus.Extensions;
|
||||
|
||||
namespace Elsa.Persistence.MongoDb.Serializers
|
||||
{
|
||||
public class TypeSerializer : IBsonSerializer<Type>
|
||||
{
|
||||
public static TypeSerializer Instance { get; } = new();
|
||||
public Type ValueType => typeof(Variables);
|
||||
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value) => Serialize(context, args, (Type) value);
|
||||
|
||||
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Type value)
|
||||
{
|
||||
var typeName = value.GetSimpleAssemblyQualifiedName();
|
||||
context.Writer.WriteString(typeName);
|
||||
}
|
||||
|
||||
object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) => Deserialize(context, args);
|
||||
|
||||
public Type Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
|
||||
{
|
||||
var typeName = context.Reader.ReadString();
|
||||
return typeName is not null and not "" ? Type.GetType(typeName)! : default!;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -63,6 +63,7 @@ namespace Elsa.Persistence.MongoDb.Services
|
|||
BsonSerializer.RegisterSerializer(VariablesSerializer.Instance);
|
||||
BsonSerializer.RegisterSerializer(JObjectSerializer.Instance);
|
||||
BsonSerializer.RegisterSerializer(ObjectSerializer.Instance);
|
||||
BsonSerializer.RegisterSerializer(TypeSerializer.Instance);
|
||||
BsonSerializer.RegisterSerializer(new InstantSerializer());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue