У меня есть сборка с DataContracts, и мне нужно создать схему .proto, чтобы она могла обмениваться данными с java-системой. Код DataContracts можно изменить, но я не могу добавить в него атрибуты [ProtoContract]
и [ProtoMember]
, потому что это приведет к зависимости сборки сборки protobuf-net. Мы используем WCF в С# частях системы, поэтому мы не хотим иметь зависимость от сборки proto-buf в большинстве проектов С#, которые не работают с java-системой.
На сайте protobuf-net в разделе GettingStarted он сказал, что:
Не нравится атрибуты? В версии 2 все, что можно сделать с атрибутами, также можно настроить во время выполнения через 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 {
}