У меня есть класс с внутренним списком. Я не хочу, чтобы пользователь этого класса мог напрямую взаимодействовать с этим списком, так как я хочу, чтобы он сортировал и выполнял расчет (который зависит от порядка), прежде чем возвращать его.Как десериализовать только чтение Список с Json.Net
Выставляю
AddItem(Item x)
и
IEnumerable<Item> Items
{
get { // returns a projection of internal list }
}
Сериализация работал нормально, но десериализации покинул список пуст. Я решил, что это потому, что у меня не было сеттера. Поэтому я добавил один, который позволил вам установить список, но только если внутренний список пуст. Но это не решило проблему, выяснилось, что NewtonSoft не вызывает setter, он только вызывает getter для получения списка, а затем добавляет к нему каждый элемент, который, поскольку мой getter возвращает проецируемый список, эти элементы добавляются к объекту, который сразу же удаляется после завершения десериализации.
Как сохранить доступ к моему списку только для чтения и в то же время разрешить несколько простое десериализацию?
сделал вы пробовали 'список уаг = новый объект [] {....}; var ser = JsonConvert.SerializeObject (list, Formatting.Indented); '? – Kiquenet
@Kiquenet: Я не десериализую список напрямую, я десериализую объект, который имеет список как свойство только для чтения. –
@NeilN Что сработало для вас? – Prakhar