Protobuf-net で List< T > から派生したオブジェクトをシリアル化する方法がわかりません。ProtoInclude 属性を追加しようとしましたが、ProtoBuf.ProtoException を受け取りました: ProtoIncludeAttribute の Known-type List`1 は、 UserTypeCollection の直接のサブクラスでなければなりません。ProtoInclude 属性を削除すると、データがまったくシリアル化されていないように見えます。このような状況の例はどこにも見つからないようです。WS API のオプションとして protobuf シリアル化を追加しており、DataContractSerializer との互換性を維持する必要があります。
[CollectionDataContract(), ProtoContract(InferTagFromName = true)]
[ProtoInclude(100, typeof(List<UserType>))]
public class UserTypeCollection : List<UserType>
{ ... }
[DataContract(), ProtoContract(InferTagFromName = true)]
public class UserType { ... }