Skip to content

Commit 79a2654

Browse files
Updated to new version with improved inheritance and extensibility for non-generic interfaces.
1 parent fdeeaa4 commit 79a2654

17 files changed

+571
-14
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace Open.Serialization.Json
2+
{
3+
interface IJsonSerializeObject : ISerializeObject
4+
{
5+
}
6+
}

Open.Serialization.Json/Open.Serialization.Json.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<PrivateAssets>all</PrivateAssets>
2727
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2828
</PackageReference>
29-
<PackageReference Include="Open.Serialization" Version="1.4.0" />
29+
<PackageReference Include="Open.Serialization" Version="1.5.0" />
3030
</ItemGroup>
3131

3232
</Project>

Open.Serialization/IDeserialize.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
11
namespace Open.Serialization
22
{
3+
/// <summary>
4+
/// Interface for deserializing any given generic type.
5+
/// </summary>
36
public interface IDeserialize
47
{
8+
/// <summary>
9+
/// Deserializes a string value to the specified type.
10+
/// </summary>
11+
/// <param name="value">The string to deserialize.</param>
12+
/// <returns>The deserialized result.</returns>
513
T Deserialize<T>(string? value);
614
}
715

16+
/// <summary>
17+
/// Interface for deserializing a predefined specific generic type.
18+
/// </summary>
819
public interface IDeserialize<out T>
920
{
21+
/// <summary>
22+
/// Deserializes a string value to the specified type.
23+
/// </summary>
24+
/// <param name="value">The string to deserialize.</param>
25+
/// <returns>The deserialized result.</returns>
1026
T Deserialize(string? value);
1127
}
1228
}

Open.Serialization/IDeserializeAsync.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,31 @@
44

55
namespace Open.Serialization
66
{
7+
/// <summary>
8+
/// Interface for asynchronously deserializing any given generic type.
9+
/// </summary>
710
public interface IDeserializeAsync
811
{
9-
ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default);
12+
/// <summary>
13+
/// Deserializes a stream to the specified type.
14+
/// </summary>
15+
/// <param name="source">The stream to deserialize.</param>
16+
/// <param name="cancellationToken">An optional cancellation token.</param>
17+
/// <returns>The deserialized result.</returns>
18+
ValueTask<T> DeserializeAsync<T>(Stream source, CancellationToken cancellationToken = default);
1019
}
1120

21+
/// <summary>
22+
/// Interface for asynchronously deserializing a predefined specific generic type.
23+
/// </summary>
1224
public interface IDeserializeAsync<T>
1325
{
14-
ValueTask<T> DeserializeAsync(Stream stream, CancellationToken cancellationToken = default);
26+
/// <summary>
27+
/// Deserializes a stream to the specified type.
28+
/// </summary>
29+
/// <param name="source">The stream to deserialize.</param>
30+
/// <param name="cancellationToken">An optional cancellation token.</param>
31+
/// <returns>The deserialized result.</returns>
32+
ValueTask<T> DeserializeAsync(Stream source, CancellationToken cancellationToken = default);
1533
}
1634
}

Open.Serialization/IDeserializeObject.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,23 @@
22

33
namespace Open.Serialization
44
{
5-
public interface IDeserializeObject
5+
/// <summary>
6+
/// Interface for deserializing any string to an object when given a type.
7+
/// </summary>
8+
public interface IDeserializeObject : IDeserialize
69
{
10+
/// <summary>
11+
/// Deserializes a string value to the specified type.
12+
/// </summary>
13+
/// <param name="value">The string to deserialize.</param>
14+
/// <param name="type">The expected type.</param>
15+
/// <returns>The deserialized result.</returns>
716
object? Deserialize(string? value, Type type);
17+
18+
#if NETSTANDARD2_1
19+
T IDeserialize.Deserialize<T>(string? value)
20+
=> (T)Deserialize(value, typeof(T))!;
21+
#endif
22+
823
}
924
}

Open.Serialization/IDeserializeObjectAsync.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,23 @@
55

66
namespace Open.Serialization
77
{
8-
public interface IDeserializeObjectAsync
8+
/// <summary>
9+
/// Interface for asynchronously deserializing any string to an object when given a type.
10+
/// </summary>
11+
public interface IDeserializeObjectAsync : IDeserializeAsync
912
{
13+
/// <summary>
14+
/// Deserializes a stream to the specified type.
15+
/// </summary>
16+
/// <param name="source">The stream to deserialize.</param>
17+
/// <param name="type">The expected type.</param>
18+
/// <param name="cancellationToken">An optional cancellation token.</param>
19+
/// <returns>The deserialized result.</returns>
1020
ValueTask<object?> DeserializeAsync(Stream source, Type type, CancellationToken cancellationToken = default);
21+
22+
#if NETSTANDARD2_1
23+
async ValueTask<T> IDeserializeAsync.DeserializeAsync<T>(Stream source, CancellationToken cancellationToken)
24+
=> (T)(await DeserializeAsync(source, typeof(T), cancellationToken))!;
25+
#endif
1126
}
1227
}
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
namespace Open.Serialization
22
{
3-
interface IObjectSerializer : ISerializeObject, IDeserializeObject
3+
/// <summary>
4+
/// Interface for defining an object serializer.
5+
/// </summary>
6+
public interface IObjectSerializer : ISerializeObject, IDeserializeObject
47
{
58
}
69

7-
interface IAsyncObjectSerializer : ISerializeObjectAsync, IDeserializeObjectAsync
10+
/// <summary>
11+
/// Interface for defining an asynchronous object serializer.
12+
/// </summary>
13+
public interface IAsyncObjectSerializer : ISerializeObjectAsync, IDeserializeObjectAsync
814
{
915
}
1016
}

Open.Serialization/ISerialize.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11
namespace Open.Serialization
22
{
3+
/// <summary>
4+
/// Interface for serializing a given generic type.
5+
/// </summary>
36
public interface ISerialize
47
{
8+
/// <summary>
9+
/// Serializes the provided item to a string.
10+
/// </summary>
11+
/// <param name="item">The item to deserialze.</param>
12+
/// <returns>The serialized string.</returns>
513
string? Serialize<T>(T item);
614
}
715

16+
17+
/// <summary>
18+
/// Interface for serializing a predefined specific generic type.
19+
/// </summary>
820
public interface ISerialize<in T>
921
{
22+
/// <summary>
23+
/// Serializes the provided item to a string.
24+
/// </summary>
25+
/// <param name="item">The item to deserialze.</param>
26+
/// <returns>The serialized string.</returns>
1027
string? Serialize(T item);
1128
}
1229
}

Open.Serialization/ISerializeAsync.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,31 @@
44

55
namespace Open.Serialization
66
{
7+
/// <summary>
8+
/// Interface for asynchronously serializing a given generic type.
9+
/// </summary>
710
public interface ISerializeAsync
811
{
9-
ValueTask SerializeAsync<T>(Stream stream, T item, CancellationToken cancellationToken = default);
12+
/// <summary>
13+
/// Serializes the provided item to a stream.
14+
/// </summary>
15+
/// <param name="target">The destination stream.</param>
16+
/// <param name="item">The item to serialize.</param>
17+
/// <param name="cancellationToken">An optional cancellation token.</param>
18+
ValueTask SerializeAsync<T>(Stream target, T item, CancellationToken cancellationToken = default);
1019
}
1120

21+
/// <summary>
22+
/// Interface for asynchronously serializing a predefined specific generic type.
23+
/// </summary>
1224
public interface ISerializeAsync<in T>
1325
{
14-
ValueTask SerializeAsync(Stream stream, T item, CancellationToken cancellationToken = default);
26+
/// <summary>
27+
/// Serializes the provided item to a stream.
28+
/// </summary>
29+
/// <param name="target">The destination stream.</param>
30+
/// <param name="item">The item to serialize.</param>
31+
/// <param name="cancellationToken">An optional cancellation token.</param>
32+
ValueTask SerializeAsync(Stream target, T item, CancellationToken cancellationToken = default);
1533
}
1634
}

Open.Serialization/ISerializeObject.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,22 @@
22

33
namespace Open.Serialization
44
{
5-
interface ISerializeObject
5+
/// <summary>
6+
/// Interface for serializing an object to a string when given a type.
7+
/// </summary>
8+
public interface ISerializeObject : ISerialize
69
{
10+
/// <summary>
11+
/// Serializes the provided item to a string.
12+
/// </summary>
13+
/// <param name="item">The item to deserialze.</param>
14+
/// <param name="type">The expected type.</param>
15+
/// <returns>The serialized string.</returns>
716
string? Serialize(object? item, Type type);
17+
18+
#if NETSTANDARD2_1
19+
string? ISerialize.Serialize<T>(T item)
20+
=> Serialize(item, typeof(T));
21+
#endif
822
}
923
}

0 commit comments

Comments
 (0)