Well, until I get around to re-implementing it for v2, GetProto<T> will just make a quiet apology. But to answer your question, consider an example such as ItemList<Customer>
Item<TItem> could be (I can't remember how v1 implements this) something like message Item_Customer { optional Customer Item = 1; } On the subject of ItemList<TItem> - unless you disable list-handling (separate topic), this will be treated *entirely* as just a List<TItem> - so no specific message is generated. As per my previous comment, such a list is then semantically identical to message SomeWrapper { repeated Item_Customer Items = 1; } Make sense? Marc On 28 June 2012 13:24, Joel Carrier <j...@joelcarrier.com> wrote: > 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 > > > On Wednesday, June 27, 2012 4:07:49 PM UTC-4, Marc Gravell wrote: >> >> The data is of course compatible. A `List<Foo>` is directly mappable to >> .proto via for example: >> >> message SomeOuterMessage { >> repeated Foo items = 1; >> } >> >> In fact, for that reason, serializing a List<Foo> will produce >> **exactly** the same data on the wire as serializing: >> >> [ProtoContract] >> public class Whatever { >> [ProtoMember(1)] >> public List<Foo> Items {get;set;} >> } >> >> which is (give or take) what you will get if you feed the above .proto >> into "protogen" (protobuf-net's entirely optional code generator for >> handling .proto definitions) >> >> Marc >> >> >> >> On 27 June 2012 16:21, Joel Carrier <j...@joelcarrier.com> wrote: >> >>> Hi Marc, >>> >>> Could you elaborate on your note: (note: this is specific to >>> protobuf-net, not "protocol buffers" more widely) >>> >>> What are the implications if communicating with non-protobuf-net >>> targets? (ie. java, python, ... applications) >>> >>> Joel >>> >>> >>> On Wednesday, June 20, 2012 9:05:49 AM UTC-4, Marc Gravell wrote: >>>> >>>> (note: this is specific to protobuf-net, not "protocol buffers" more >>>> widely), but yes: that (a generic list) would work fine, as long as the >>>> property has been marked for serialization and given a number. There also >>>> doesn't need to be a "set" accessor, although it can make full use of a >>>> "set" - i.e. if it finds the list is "null", it will create a new list of >>>> the appropriate type and use the "set" to update the object. >>>> >>>> So, your code would be fine if it has been designated a number, or a >>>> related example: >>>> >>>> [ProtoMember(4)] >>>> public List<Order> Orders { get { return orders; } } >>>> private readonly List<Order> orders = new List<Order>(); >>>> >>>> Marc >>>> (protobuf-net) >>>> >>>> On 20 June 2012 13:08, Farooq Mushtaq <farooqmushta...@gmail.com>wrote: >>>> >>>>> How can we serialize list of objects by using protobuf-net? Is >>>>> protobuf-net support list of objects like >>>>> public List(ABC) DEF >>>>> { >>>>> get; >>>>> set; >>>>> } >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Protocol Buffers" group. >>>>> To view this discussion on the web visit https://groups.google.com/d/* >>>>> *ms**g/protobuf/-/W0yySDcbES8J<https://groups.google.com/d/msg/protobuf/-/W0yySDcbES8J> >>>>> . >>>>> To post to this group, send email to protobuf@googlegroups.com. >>>>> To unsubscribe from this group, send email to protobuf+unsubscribe@** >>>>> googlegro**ups.com <protobuf%2bunsubscr...@googlegroups.com>. >>>>> For more options, visit this group at http://groups.google.com/**group >>>>> **/protobuf?hl=en <http://groups.google.com/group/protobuf?hl=en>. >>>>> >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> >>>> Marc >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Protocol Buffers" group. >>> To view this discussion on the web visit https://groups.google.com/d/** >>> msg/protobuf/-/2pcXp7q9LCcJ<https://groups.google.com/d/msg/protobuf/-/2pcXp7q9LCcJ> >>> . >>> >>> To post to this group, send email to protobuf@googlegroups.com. >>> To unsubscribe from this group, send email to protobuf+unsubscribe@** >>> googlegroups.com <protobuf%2bunsubscr...@googlegroups.com>. >>> For more options, visit this group at http://groups.google.com/** >>> group/protobuf?hl=en <http://groups.google.com/group/protobuf?hl=en>. >>> >> >> >> >> -- >> Regards, >> >> Marc >> > -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/protobuf/-/SUzHf4_n0O4J. > > To post to this group, send email to protobuf@googlegroups.com. > To unsubscribe from this group, send email to > protobuf+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/protobuf?hl=en. > -- Regards, Marc -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.