Serialization 在protobuf net中,有没有一种方法可以指定在序列化/反序列化给定类型时要使用的自定义方法?

Serialization 在protobuf net中,有没有一种方法可以指定在序列化/反序列化给定类型时要使用的自定义方法?,serialization,protocol-buffers,protobuf-net,Serialization,Protocol Buffers,Protobuf Net,在(Marc Gravell实现)中,是否有方法指定每次protobuf遇到要序列化的类型时使用的自定义序列化程序/反序列化程序 诸如此类: [ProtoContract] class Foo { [ProtoMember(1), ProtoSerializer(BarSerializer)] public Bar Something { get; set; } } class BarSerializer { public void Serialize(object v

在(Marc Gravell实现)中,是否有方法指定每次protobuf遇到要序列化的类型时使用的自定义序列化程序/反序列化程序

诸如此类:

[ProtoContract]
class Foo 
{
    [ProtoMember(1), ProtoSerializer(BarSerializer)]
    public Bar Something { get; set; }
}

class BarSerializer
{
   public void Serialize(object value, Protowriter writer)
   {
       //do something here with writer...
   }
}
我看了文件,但什么也没找到。 我知道可以直接使用
Protowriter
序列化对象(如本例)


我想做的是只对给定的类型使用自定义序列化程序,对已经实现的其他类型(例如:int,string,…)使用默认实现。但您可以编写第二个类型(代理类型),用于序列化。此类型需要在两个类型之间具有转换运算符(在其中一个类型上声明,通常为代理项),并注册到库中,例如:

RuntimeTypeModel.Default[typeof(Foo)].SetSurrogate(typeof(FooSurrogate));
库仍然控制如何在导线上写入
FooSurrogate
。目前还没有允许您直接控制类型内部输出的API。但是如果你从
ProtoWriter
开始,你当然可以手动完成所有事情