protobuf-net将复杂类型(类)序列化为标量

时间:2015-05-26 21:43:41

标签: c# serialization protobuf-net

是否有人知道如何使用protobuf-net将复杂类型序列化为标量值?

我有十几个价值对象,如:

using System.Collections.Immutable;

public sealed class Id /*: IEquatable<Id>*/
{
    public Id(byte[] id)
    {
        // some validation

        Value = id.ToImmutableArray();
    }

    public ImmutableArray<byte> Value { get; }

    // overriden Equals, GetHashCode, ToString, some operators, etc.
}

(我尽可能地简化了类型)

这些类型是实际合约中的属性。 我想将它们的序列化/反序列化作为基础标量值。所以对于上面的代码,它会以某种方式挂钩到序列化过程:

Func<Id, byte[]> serialize = id => id.Value.ToArray();
Func<byte[], Id> deserialize = bytes => new Id(bytes); 

在Newtonsoft JSON.NET中使用类似JsonConverter的内容或任何其他可以实现映射的方式。

我已经通过在RuntimeTypeModel中注册检查了序列化代理。它很接近,但并不完全(它对类类映射有好处,而不是类标量值)。

0 个答案:

没有答案