Thanks a lot for the explanation Marc.
I'm currently investigating some interop issues we're having and I'm starting to realize that this might be the source of the problem.
[CollectionDataContract(Name = "ItemList")]
public class ItemList<TItem> : List<Item<TItem>> where TItem : class
...
where
[DataContract(Name = "Item")]
public class Item<TItem> where TItem : class
{
[DataMember(Order = 1, Name = "Item")]
public TItem Item { get; set; }
...
The TItems are classes generated from .proto files. So we're mixing the functionality (annotated classes vs. proto files).
I think we're breaking a lot of "rules" here and I'm wondering how this could ever generate valid .proto files.
That is, if it were to work, I have trouble picturing what Serializer.GetProto<ItemList>() might output.
This does appear to be working between clients using protobuf-net but I guess what I'm looking for is confirmation that this would probably not work nicely interop-ing with other Protocol Buffer libraries.
(Note: I'm new to this stuff, so if I'm not making any sense at all let me know and I'll return with a smarter question.)
Joel