Skip to content

Commit b9cbfbf

Browse files
committed
Support serializer settings for Newtonsoft.Json
1 parent b4425cd commit b9cbfbf

2 files changed

Lines changed: 36 additions & 24 deletions

File tree

src/CacheTower.Serializers.NewtonsoftJson/NewtonsoftJsonCacheSerializer.cs

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,46 @@
22
using System.Text;
33
using Newtonsoft.Json;
44

5-
namespace CacheTower.Serializers.NewtonsoftJson
5+
namespace CacheTower.Serializers.NewtonsoftJson;
6+
7+
/// <summary>
8+
/// Allows serializing to and from JSON via Newtonsoft.Json
9+
/// </summary>
10+
public class NewtonsoftJsonCacheSerializer : ICacheSerializer
611
{
12+
private readonly JsonSerializer serializer;
13+
714
/// <summary>
8-
/// Allows serializing to and from JSON via Newtonsoft.Json
15+
/// An existing instance of <see cref="NewtonsoftJsonCacheSerializer"/>.
916
/// </summary>
10-
public class NewtonsoftJsonCacheSerializer : ICacheSerializer
17+
public static NewtonsoftJsonCacheSerializer Instance { get; } = new();
18+
19+
private NewtonsoftJsonCacheSerializer()
1120
{
12-
/// <summary>
13-
/// An existing instance of <see cref="NewtonsoftJsonCacheSerializer"/>.
14-
/// </summary>
15-
public static NewtonsoftJsonCacheSerializer Instance { get; } = new();
21+
serializer = new JsonSerializer();
22+
}
1623

17-
private JsonSerializer Serializer { get; } = new JsonSerializer();
24+
/// <summary>
25+
/// Creates a new instance of <see cref="NewtonsoftJsonCacheSerializer"/> with the specified <paramref name="settings"/>.
26+
/// </summary>
27+
public NewtonsoftJsonCacheSerializer(JsonSerializerSettings settings)
28+
{
29+
serializer = JsonSerializer.Create(settings);
30+
}
1831

19-
/// <inheritdoc />
20-
public void Serialize<T>(Stream stream, T? value)
21-
{
22-
using var streamWriter = new StreamWriter(stream, Encoding.UTF8, 1024, true);
23-
using var jsonWriter = new JsonTextWriter(streamWriter);
24-
Serializer.Serialize(jsonWriter, value);
25-
}
32+
/// <inheritdoc />
33+
public void Serialize<T>(Stream stream, T? value)
34+
{
35+
using var streamWriter = new StreamWriter(stream, Encoding.UTF8, 1024, true);
36+
using var jsonWriter = new JsonTextWriter(streamWriter);
37+
serializer.Serialize(jsonWriter, value);
38+
}
2639

27-
/// <inheritdoc />
28-
public T? Deserialize<T>(Stream stream)
29-
{
30-
using var streamReader = new StreamReader(stream, Encoding.UTF8, false, 1024);
31-
using var jsonReader = new JsonTextReader(streamReader);
32-
return Serializer.Deserialize<T>(jsonReader);
33-
}
40+
/// <inheritdoc />
41+
public T? Deserialize<T>(Stream stream)
42+
{
43+
using var streamReader = new StreamReader(stream, Encoding.UTF8, false, 1024);
44+
using var jsonReader = new JsonTextReader(streamReader);
45+
return serializer.Deserialize<T>(jsonReader);
3446
}
3547
}

src/CacheTower.Serializers.SystemTextJson/SystemTextJsonCacheSerializer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ public class SystemTextJsonCacheSerializer : ICacheSerializer
1010
{
1111
private readonly JsonSerializerOptions? options;
1212

13-
private SystemTextJsonCacheSerializer() { }
14-
1513
/// <summary>
1614
/// An existing instance of <see cref="SystemTextJsonCacheSerializer"/>.
1715
/// </summary>
1816
public static SystemTextJsonCacheSerializer Instance { get; } = new();
1917

18+
private SystemTextJsonCacheSerializer() { }
19+
2020
/// <summary>
2121
/// Creates a new instance of <see cref="SystemTextJsonCacheSerializer"/> with the specified <paramref name="options"/>.
2222
/// </summary>

0 commit comments

Comments
 (0)