Это удивительно сложный вопрос. Когда сериализует , он в основном просто использует foreach
, то есть GetEnumerator()
API - или перечисление на основе плоского индексатора для массивов. Когда десериализует , в основном пытается найти метод .Add(YourType t)
. Для словарей он будет искать любой из Add(KeyValuePair<TKey, TValue>)
, Add(TKey, TValue)
или индексатор TValue this[TKey]
(в частности, для "карт").
Однако! Реальность намного больше нюансов, чем это, так как нам также нужно подумать о ряде более сложных типов коллекций. Для 2.4. * Это очень , трудно поддающийся обработке, потому что это все время выполнения IL, однако: для ветви 3.0 вы можете увидеть некоторые из сценариев ios здесь - в частности см .:
- RepeatedSerializer.cs
- RepeatedSerializer.Immutable.cs
- RepeatedSerializer.Concurrent.cs
- MapSerializer.cs
- MapSerializer.Immutable.cs
- MapSerializer.Concurrent.cs
Обычно , однако: ответ: «это будет просто работать».