Можно ли сериализовать как T и десериализовать как List <T>? - PullRequest
0 голосов
/ 10 декабря 2018

Я могу десериализовать все элементы в моем двоичном файле, только если я добавлю его как коллекцию (в данном случае List ).

Имеет смысл на одном уровне, однако я добавляю только один элемент ксписок, поэтому я создаю список с одним элементом в нем, затем сериализую, только тогда я могу десериализовать как список .Есть ли какой-то удар по производительности или я обдумываю это?

1 Ответ

0 голосов
/ 07 января 2019

Если вы только когда-либо добавляете один элемент в список, тогда да есть некоторые маргинальные накладные расходы на наличие списка, но, что интересно, это только влияетвремя выполнения - фактическая сериализация списка с одним элементом по сравнению с прямым (не относящимся к списку) под-свойством идентична.Так;, если вы абсолютно уверены, , что у вас есть (максимум) один элемент, следующие будут взаимозаменяемыми:

[ProtoMember(42)]
public List<Foo> Foos {get;} = new List<Foo>(); // has at most one item

и

[ProtoMember(42)]
public Foo Foo {get;set;}
...