ProtoInclude
используется для обозначения под типов, а не базовых типов (в конце концов, базовый тип уже известен).Кроме того, IList<T>
обработка должна в значительной степени быть неявной;обратите внимание, что "вывод ..." и т. д. в случае списков делают очень мало, поскольку списки представляют собой просто последовательность содержащихся элементов.
Для следующего я предполагаючто вы пытаетесь сериализовать список (как самый верхний объект):
Я сейчас не на той машине, но в выпущенных dll я бы ожидайте , что обертывание списка с помощью объекта заставит его работать:
[DataContract]
public class Foo {
private readonly UserTypeCollection items = new UserTypeCollection();
[DataMember(Order=1)]
public UserTypeCollection Items {get{return items;}}
}
В «v2» я бы надеялся, что этот сценарий работает с самого начала.Я попытаюсь проверить это завтра (когда у меня будет подходящая машина).
Еще одна мысль;Подклассы List<T>
обычно не очень полезны, поскольку ни один из методов не является виртуальным.Конечно, до вас.И последнее замечание - в «v2» мы можем описать модель внешне, если вы хотите иметь больше контроля над сериализацией, но без влияния на сами типы.