17

DataContracts を使用したアセンブリがあり、Java システムとデータを交換できるように .proto スキーマを生成する必要があります。DataContracts コードは変更できますが、protobuf-net アセンブリの依存関係が発生するため[ProtoContract]、属性を追加できません。[ProtoMember]システムの C# 部分で WCF を使用するため、Java システムで動作しないほとんどの C# プロジェクトで proto-buf アセンブリに依存したくありません。

GettingStartedセクションの protobuf-net サイトでは、次のように述べられています。

属性が嫌いですか?
v2 では、属性で実行できることはすべて、RuntimeTypeModel を介して実行時に構成することもできます。

ただし、属性なしでシリアライゼーションを実際に構成する方法がわからず、その例も見たことがありません。

私はやろうとしています

[DataContract]
public class MyEntity
{
    [DataMember(Order = 1)]
    public String PropertyA { get; set; }

    [DataMember(Order = 2)]
    public int PropertyB { get; set; }
}

RuntimeTypeModel.Default.Add(typeof(MyEntity), false);

string proto = Serializer.GetProto<MyEntity>();

の値として以下を取得します。proto

package ProtobufTest;

message MyEntity {
}
4

1 に答える 1