是否有人知道如何使用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中注册检查了序列化代理。它很接近,但并不完全(它对类类映射有好处,而不是类标量值)。