我有一个带有 DataContracts 的程序集,我需要生成 .proto 模式,以便它能够与 java 系统交换数据。DataContracts 代码可以更改,但我不能在其中添加[ProtoContract]
和[ProtoMember]
属性,因为它会导致 protobuf-net 程序集依赖。我们在系统的 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 {
}