3

protobuf-net シリアライゼーションで動作していないように見えるクラスがあり、クラスがそれ自体の別のインスタンスへの参照を持っている時点で壊れているようです。これが例です(私の実際のコードから大幅に簡略化されています):

[ProtoContract]
public sealed class Acorn
{
    [ProtoMember(50)]
    public string Investment;
    [ProtoMember(51)]
    public string Broker;
    [ProtoMember(52)]
    public Acorn DefaultTransferAcorn;
}

私が知る限り、問題を引き起こしているように見えるのは、Acorn クラス内の別の Acorn クラスへの参照です。mono で次のエラー メッセージが表示されます。

System.Reflection.TargetInvocationException: 呼び出しのターゲットによって例外がスローされました。---> ProtoBuf.ProtoException: 再帰の可能性が検出されました (オフセット: 4 レベル): AcornTrail3.Acorn

これは protobuf-net の制限ですか、それともこれを機能させる方法はありますか?

4

1 に答える 1

5

デフォルトでは、protobuf は「ツリー」構造です。Protobuf-net は、グラフのサポートを追加します。影響を受ける ProtoMember に AsReference=true を追加します。

于 2013-03-30T14:42:24.910 に答える