2016-08-18 6 views
1

protobuf-net(Marc Gravellの実装)では、プロトタイプが直列化される型を取り込むたびに、カスタムのシリアライザ/デシリアライザを使用するよう指定する方法はありますか?そのようなprotobuf-netでは、指定された型をシリアライズ/デシリアライズするときに使用するカスタムメソッドを指定する方法はありますか?

何か:

[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を直接使用してオブジェクトをシリアル化することができます(この例のようにDataTableの例)。基本的には:(int型、文字列、...など)

答えて

1

いいえ、

私は何をしたいことだけ与えられた型のカスタム・シリアライザを使用し、すでに実装され、他のタイプのためのデフォルトの実装を使用することです。しかし、あなたは何かすることがあります(代理型)シリアル化に使用されます。このタイプは、例えば、(どちらかで宣言、通常は代理)2種類の変換演算子を持っている必要があり、ライブラリに登録されて:

RuntimeTypeModel.Default[typeof(Foo)].SetSurrogate(typeof(FooSurrogate)); 

ライブラリはまだFooSurrogateがワイヤの上に書かれている方法を制御します。現時点では、の出力を直接制御できるAPIはありません。しかし、ProtoWriterから始めれば、もちろん手動ですべてを行うことができます。

関連する問題