Skip to content

Commit fa56eae

Browse files
authored
Add object based Serialize overloads to Serializer (#156)
As titled.
1 parent 01f16e5 commit fa56eae

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

src/Elastic.Transport/Components/Serialization/Serializer.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,25 @@ public abstract class Serializer
2121
// TODO: Overloads taking a Memory<T>/Span<T>??
2222

2323
/// <summary> Deserialize <paramref name="stream"/> to an instance of <paramref name="type"/> </summary>
24-
public abstract object Deserialize(Type type, Stream stream);
24+
public abstract object? Deserialize(Type type, Stream stream);
2525

2626
/// <summary> Deserialize <paramref name="stream"/> to an instance of <typeparamref name="T" /></summary>
2727
public abstract T Deserialize<T>(Stream stream);
2828

2929
/// <inheritdoc cref="Deserialize"/>
30-
public abstract ValueTask<object> DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default);
30+
public abstract ValueTask<object?> DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default);
3131

3232
/// <inheritdoc cref="Deserialize"/>
3333
public abstract ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default);
3434

35-
// TODO: Overloads for (object?, Type) inputs
35+
/// <inheritdoc cref="Serialize{T}"/>
36+
public abstract void Serialize(
37+
object? data,
38+
Type type,
39+
Stream stream,
40+
SerializationFormatting formatting = SerializationFormatting.None,
41+
CancellationToken cancellationToken = default
42+
);
3643

3744
/// <summary>
3845
/// Serialize an instance of <typeparamref name="T"/> to <paramref name="stream"/> using <paramref name="formatting"/>.
@@ -43,7 +50,20 @@ public abstract class Serializer
4350
/// Formatting hint. Note that not all implementations of <see cref="Serializer"/> are able to
4451
/// satisfy this hint, including the default serializer that is shipped with 8.0.
4552
/// </param>
46-
public abstract void Serialize<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.None);
53+
public abstract void Serialize<T>(
54+
T data,
55+
Stream stream,
56+
SerializationFormatting formatting = SerializationFormatting.None
57+
);
58+
59+
/// <inheritdoc cref="Serialize{T}"/>
60+
public abstract Task SerializeAsync(
61+
object? data,
62+
Type type,
63+
Stream stream,
64+
SerializationFormatting formatting = SerializationFormatting.None,
65+
CancellationToken cancellationToken = default
66+
);
4767

4868
/// <inheritdoc cref="Serialize{T}"/>
4969
public abstract Task SerializeAsync<T>(

src/Elastic.Transport/Components/Serialization/SystemTextJsonSerializer.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,26 @@ public override ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToke
7272
}
7373

7474
/// <inheritdoc />
75-
public override void Serialize<T>(T data, Stream writableStream,
75+
public override void Serialize<T>(T data, Stream stream,
7676
SerializationFormatting formatting = SerializationFormatting.None) =>
77-
JsonSerializer.Serialize(writableStream, data, GetJsonSerializerOptions(formatting));
77+
JsonSerializer.Serialize(stream, data, GetJsonSerializerOptions(formatting));
78+
79+
/// <inheritdoc />
80+
public override void Serialize(object? data, Type type, Stream stream, SerializationFormatting formatting = SerializationFormatting.None,
81+
CancellationToken cancellationToken = default) =>
82+
JsonSerializer.Serialize(stream, data, type, GetJsonSerializerOptions(formatting));
7883

7984
/// <inheritdoc />
8085
public override Task SerializeAsync<T>(T data, Stream stream,
8186
SerializationFormatting formatting = SerializationFormatting.None,
8287
CancellationToken cancellationToken = default) =>
8388
JsonSerializer.SerializeAsync(stream, data, GetJsonSerializerOptions(formatting), cancellationToken);
8489

90+
/// <inheritdoc />
91+
public override Task SerializeAsync(object? data, Type type, Stream stream, SerializationFormatting formatting = SerializationFormatting.None,
92+
CancellationToken cancellationToken = default) =>
93+
JsonSerializer.SerializeAsync(stream, data, type, GetJsonSerializerOptions(formatting), cancellationToken);
94+
8595
#endregion Serializer
8696

8797
/// <summary>

0 commit comments

Comments
 (0)