Skip to content

Commit 8d7390f

Browse files
Added non-generic interfaces and classes.
1 parent 6c17bf8 commit 8d7390f

6 files changed

Lines changed: 61 additions & 2 deletions

File tree

Open.Serialization/IDeserializeObjectAsync.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ namespace Open.Serialization
77
{
88
public interface IDeserializeObjectAsync
99
{
10-
ValueTask<object?> DeserializeAsync<T>(Stream stream, Type type, CancellationToken cancellationToken = default);
10+
ValueTask<object?> DeserializeAsync(Stream source, Type type, CancellationToken cancellationToken = default);
1111
}
1212
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace Open.Serialization
2+
{
3+
interface IObjectSerializer : ISerializeObject, IDeserializeObject
4+
{
5+
}
6+
7+
interface IAsyncObjectSerializer : ISerializeObjectAsync, IDeserializeObjectAsync
8+
{
9+
}
10+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using System;
2+
3+
namespace Open.Serialization
4+
{
5+
interface ISerializeObject
6+
{
7+
string? Serialize(object? item, Type type);
8+
}
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
using System.IO;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
6+
namespace Open.Serialization
7+
{
8+
interface ISerializeObjectAsync
9+
{
10+
ValueTask SerializeAsync(Stream target, object? item, Type type, CancellationToken cancellationToken = default);
11+
}
12+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.IO;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
6+
namespace Open.Serialization
7+
{
8+
public abstract class ObjectSerializerBase : IObjectSerializer, IAsyncObjectSerializer
9+
{
10+
public abstract string? Serialize(object? item, Type type);
11+
public abstract object? Deserialize(string? value, Type type);
12+
13+
public virtual async ValueTask SerializeAsync(Stream target, object? item, Type type, CancellationToken cancellationToken = default)
14+
{
15+
var text = Serialize(item, type);
16+
using var writer = new StreamWriter(target);
17+
await writer.WriteAsync(text).ConfigureAwait(false);
18+
}
19+
20+
public async virtual ValueTask<object?> DeserializeAsync(Stream source, Type type, CancellationToken cancellationToken = default)
21+
{
22+
string text;
23+
using (var reader = new StreamReader(source))
24+
text = await reader.ReadToEndAsync().ConfigureAwait(false);
25+
return Deserialize(text, type);
26+
}
27+
}
28+
}

Open.Serialization/Open.Serialization.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Part of the "Open" set of libraries.
1717
<RepositoryUrl>https://github.com/electricessence/Open.Serialization</RepositoryUrl>
1818
<RepositoryType>git</RepositoryType>
1919
<PackageTags>serialization json</PackageTags>
20-
<Version>1.4.0</Version>
20+
<Version>1.5.0</Version>
2121
<Nullable>enable</Nullable>
2222
<PackageReleaseNotes>Improved nullable reference support. FxCop inspections and fixes.</PackageReleaseNotes>
2323
</PropertyGroup>

0 commit comments

Comments
 (0)