подклассы: вы уже показали, как это сделать - что у вас есть это ; если я неправильно понимаю эту часть вопроса, пожалуйста, уточните, и я постараюсь помочь больше
методов: вы не делаете; protobuf- net не очень заинтересован в методах - это сериализатор data , а не стек RP C; если вам нужен стек RP C: рассмотрите protobuf- net .Grp c, который выводит аромат WCF в gRP C с использованием protobuf- net и базовых стеков Google / Microsoft gRP C; вот документы по началу работы ; здесь также обсуждается [OperationContract]
.
[ProtoBehavior]
имеет прямое отношение к WCF; вы используете WCF? честно говоря, большинство людей нет; Опять же, если вы ищете RP C на основе протобуфа, я бы лучше указал вам в направлении protobuf- net .Grp c
Что касается [DataMember(Order = 1)]
: protobuf- net нужны цифры c токены для разрешения полей; Есть несколько способов его принятия, чтобы обеспечить более широкую совместимость; наиболее типичным (и наиболее мощным, поскольку он обеспечивает более точное управление) является использование собственных атрибутов библиотеки:
[ProtoContract]
public class Foo {
[ProtoMember(1)] public int X {get;set;}
[ProtoMember(2)] public string Y {get;set;}
[ProtoMember(3)] public long Z {get;set;}
}
Однако вышеприведенное будет на 100% совместимо с тем же намерением, выраженным через альтернативные атрибуты:
[DataContract]
public class Foo {
[DataMember(Order = 1)] public int X {get;set;}
[DataMember(Order = 2)] public string Y {get;set;}
[DataMember(Order = 3)] public long Z {get;set;}
}
(а также [XmlType]/[XmlElement(...)]
)
Он предпочитает атрибуты библиотеки, заданные c, и, если они найдены, они выигрывают.