title | author | description | keywords | dev_langs | ||
---|---|---|---|---|---|---|
Object Serializer |
simop |
IObjectSerializer is an interface that you can implement to provide a serializer of your choice to ObjectStorageHelper. |
windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, serialization |
|
You should implement IObjectSerializer when you need to write data using this toolkit's helpers with a custom serializer. If you don't, a default JSON serializer will be used otherwise.
Methods | Return Type | Description |
---|---|---|
Serialize<T>(T) | object | Serialize an object of type T into a object. |
Deserialize<T>(object) | T | Deserialize a object to an object of type T. |
using Microsoft.Toolkit.Uwp.Helpers;
using System.Text.Json;
namespace Contoso.Helpers
{
public class SystemTextJsonObjectSerializer : IObjectSerializer
{
public object Serialize<T>(T value) => JsonSerializer.Serialize(value);
public T Deserialize<T>(object value) => JsonSerializer.Deserialize<T>((string)value);
}
}
using Microsoft.Toolkit.Uwp.Helpers;
using Newtonsoft.Json;
namespace Contoso.Helpers
{
public class JsonNetObjectSerializer : IObjectSerializer
{
// Specify your serialization settings
private readonly JsonSerializerSettings settings = new JsonSerializerSettings();
public object Serialize<T>(T value) => JsonConvert.SerializeObject(value, typeof(T), Formatting.Indented , settings);
public T Deserialize<T>(object value) => JsonConvert.DeserializeObject<T>((string)value, settings);
}
}
using Microsoft.Toolkit.Uwp.Helpers;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
namespace Contoso.Helpers
{
public class DataContractObjectSerializer : IObjectSerializer
{
// Specify your serialization settings
private readonly DataContractSerializerSettings settings = new DataContractSerializerSettings();
public object Serialize<T>(T value)
{
var serializer = new DataContractSerializer(typeof(T), settings);
using (var stringWriter = new StringWriter())
using (var xmlWriter = XmlWriter.Create(stringWriter))
{
serializer.WriteObject(xmlWriter, value);
return stringWriter.ToString();
}
}
public T Deserialize<T>(object value)
{
var serializer = new DataContractSerializer(typeof(T), settings);
using (var stringReader = new StringReader((string)value))
using (var xmlReader = XmlReader.Create(stringReader))
{
return (T)serializer.ReadObject(xmlReader);
}
}
}
}
Device family | Universal, 10.0.16299.0 or higher |
---|---|
Namespace | Microsoft.Toolkit.Uwp |
NuGet package | Microsoft.Toolkit.Uwp |