29 lines
863 B
C#
29 lines
863 B
C#
using Newtonsoft.Json;
|
|
|
|
namespace Pilz.Networking.Api;
|
|
|
|
public class DefaultMessageSerializer : IMessageSerializer
|
|
{
|
|
private static JsonSerializerSettings? defaultSerializerSettings;
|
|
|
|
public JsonSerializerSettings DefaultSerializerSettings => defaultSerializerSettings ??= CreateDefaultSerializerSettings();
|
|
|
|
protected virtual JsonSerializerSettings CreateDefaultSerializerSettings()
|
|
{
|
|
return new JsonSerializerSettings
|
|
{
|
|
TypeNameHandling = TypeNameHandling.Auto,
|
|
};
|
|
}
|
|
|
|
public virtual string? Serialize(ApiMessage message)
|
|
{
|
|
return JsonConvert.SerializeObject(message, DefaultSerializerSettings);
|
|
}
|
|
|
|
public virtual ApiMessage? Deserialize(string json, Type target)
|
|
{
|
|
return JsonConvert.DeserializeObject(json, target, DefaultSerializerSettings) as ApiMessage;
|
|
}
|
|
}
|